← Back season_20232024.log
Tail 1000 Full File
--- Starting Daily Update for Season 20232024 --- [1/4] Updating Game Data... _season: starting fetch for season=20232024, team=all, games=2187, workers=4, use_cache=True Fetching feeds: 1/2187 Fetching feeds: 2/2187 Fetching feeds: 3/2187 Fetching feeds: 4/2187 Fetching feeds: 5/2187 Fetching feeds: 6/2187 Fetching feeds: 7/2187 Fetching feeds: 8/2187 Fetching feeds: 9/2187 Fetching feeds: 10/2187 Fetching feeds: 11/2187 Fetching feeds: 12/2187 Fetching feeds: 13/2187 Fetching feeds: 14/2187 Fetching feeds: 15/2187 Fetching feeds: 16/2187 Fetching feeds: 17/2187 Fetching feeds: 18/2187 Fetching feeds: 19/2187 Fetching feeds: 20/2187 Fetching feeds: 21/2187 Fetching feeds: 22/2187 Fetching feeds: 23/2187 Fetching feeds: 24/2187 Fetching feeds: 25/2187 Fetching feeds: 26/2187 Fetching feeds: 27/2187 Fetching feeds: 28/2187 Fetching feeds: 29/2187 Fetching feeds: 30/2187 Fetching feeds: 31/2187 Fetching feeds: 32/2187 Fetching feeds: 33/2187 Fetching feeds: 34/2187 Fetching feeds: 35/2187 Fetching feeds: 36/2187 Fetching feeds: 37/2187 Fetching feeds: 38/2187 Fetching feeds: 39/2187 Fetching feeds: 40/2187 Fetching feeds: 41/2187 Fetching feeds: 42/2187 Fetching feeds: 43/2187 Fetching feeds: 44/2187 Fetching feeds: 45/2187 Fetching feeds: 46/2187 Fetching feeds: 47/2187 Fetching feeds: 48/2187 Fetching feeds: 49/2187 Fetching feeds: 50/2187 Fetching feeds: 51/2187 Fetching feeds: 52/2187 Fetching feeds: 53/2187 Fetching feeds: 54/2187 Fetching feeds: 55/2187 Fetching feeds: 56/2187 Fetching feeds: 57/2187 Fetching feeds: 58/2187 Fetching feeds: 59/2187 Fetching feeds: 60/2187 Fetching feeds: 61/2187 Fetching feeds: 62/2187 Fetching feeds: 63/2187 Fetching feeds: 64/2187 Fetching feeds: 65/2187 Fetching feeds: 66/2187 Fetching feeds: 67/2187 Fetching feeds: 68/2187 Fetching feeds: 69/2187 Fetching feeds: 70/2187 Fetching feeds: 71/2187 Fetching feeds: 72/2187 Fetching feeds: 73/2187 Fetching feeds: 74/2187 Fetching feeds: 75/2187 Fetching feeds: 76/2187 Fetching feeds: 77/2187 Fetching feeds: 78/2187 Fetching feeds: 79/2187 Fetching feeds: 80/2187 Fetching feeds: 81/2187 Fetching feeds: 82/2187 Fetching feeds: 83/2187 Fetching feeds: 84/2187 Fetching feeds: 85/2187 Fetching feeds: 86/2187 Fetching feeds: 87/2187 Fetching feeds: 88/2187 Fetching feeds: 89/2187 Fetching feeds: 90/2187 Fetching feeds: 91/2187 Fetching feeds: 92/2187 Fetching feeds: 93/2187 Fetching feeds: 94/2187 Fetching feeds: 95/2187 Fetching feeds: 96/2187 Fetching feeds: 97/2187 Fetching feeds: 98/2187 Fetching feeds: 99/2187 Fetching feeds: 100/2187 Fetching feeds: 101/2187 Fetching feeds: 102/2187 Fetching feeds: 103/2187 Fetching feeds: 104/2187 Fetching feeds: 105/2187 Fetching feeds: 106/2187 Fetching feeds: 107/2187 Fetching feeds: 108/2187 Fetching feeds: 109/2187 Fetching feeds: 110/2187 Fetching feeds: 111/2187 Fetching feeds: 112/2187 Fetching feeds: 113/2187 Fetching feeds: 114/2187 Fetching feeds: 115/2187 Fetching feeds: 116/2187 Fetching feeds: 117/2187 Fetching feeds: 118/2187 Fetching feeds: 119/2187 Fetching feeds: 120/2187 Fetching feeds: 121/2187 Fetching feeds: 122/2187 Fetching feeds: 123/2187 Fetching feeds: 124/2187 Fetching feeds: 125/2187 Fetching feeds: 126/2187 Fetching feeds: 127/2187 Fetching feeds: 128/2187 Fetching feeds: 129/2187 Fetching feeds: 130/2187 Fetching feeds: 131/2187 Fetching feeds: 132/2187 Fetching feeds: 133/2187 Fetching feeds: 134/2187 Fetching feeds: 135/2187 Fetching feeds: 136/2187 Fetching feeds: 137/2187 Fetching feeds: 138/2187 Fetching feeds: 139/2187 Fetching feeds: 140/2187 Fetching feeds: 141/2187 Fetching feeds: 142/2187 Fetching feeds: 143/2187 Fetching feeds: 144/2187 Fetching feeds: 145/2187 Fetching feeds: 146/2187 Fetching feeds: 147/2187 Fetching feeds: 148/2187 Fetching feeds: 149/2187 Fetching feeds: 150/2187 Fetching feeds: 151/2187 Fetching feeds: 152/2187 Fetching feeds: 153/2187 Fetching feeds: 154/2187 Fetching feeds: 155/2187 Fetching feeds: 156/2187 Fetching feeds: 157/2187 Fetching feeds: 158/2187 Fetching feeds: 159/2187 Fetching feeds: 160/2187 Fetching feeds: 161/2187 Fetching feeds: 162/2187 Fetching feeds: 163/2187 Fetching feeds: 164/2187 Fetching feeds: 165/2187 Fetching feeds: 166/2187 Fetching feeds: 167/2187 Fetching feeds: 168/2187 Fetching feeds: 169/2187 Fetching feeds: 170/2187 Fetching feeds: 171/2187 Fetching feeds: 172/2187 Fetching feeds: 173/2187 Fetching feeds: 174/2187 Fetching feeds: 175/2187 Fetching feeds: 176/2187 Fetching feeds: 177/2187 Fetching feeds: 178/2187 Fetching feeds: 179/2187 Fetching feeds: 180/2187 Fetching feeds: 181/2187 Fetching feeds: 182/2187 Fetching feeds: 183/2187 Fetching feeds: 184/2187 Fetching feeds: 185/2187 Fetching feeds: 186/2187 Fetching feeds: 187/2187 Fetching feeds: 188/2187 Fetching feeds: 189/2187 Fetching feeds: 190/2187 Fetching feeds: 191/2187 Fetching feeds: 192/2187 Fetching feeds: 193/2187 Fetching feeds: 194/2187 Fetching feeds: 195/2187 Fetching feeds: 196/2187 Fetching feeds: 197/2187 Fetching feeds: 198/2187 Fetching feeds: 199/2187 Fetching feeds: 200/2187 Fetching feeds: 201/2187 Fetching feeds: 202/2187 Fetching feeds: 203/2187 Fetching feeds: 204/2187 Fetching feeds: 205/2187 Fetching feeds: 206/2187 Fetching feeds: 207/2187 Fetching feeds: 208/2187 Fetching feeds: 209/2187 Fetching feeds: 210/2187 Fetching feeds: 211/2187 Fetching feeds: 212/2187 Fetching feeds: 213/2187 Fetching feeds: 214/2187 Fetching feeds: 215/2187 Fetching feeds: 216/2187 Fetching feeds: 217/2187 Fetching feeds: 218/2187 Fetching feeds: 219/2187 Fetching feeds: 220/2187 Fetching feeds: 221/2187 Fetching feeds: 222/2187 Fetching feeds: 223/2187 Fetching feeds: 224/2187 Fetching feeds: 225/2187 Fetching feeds: 226/2187 Fetching feeds: 227/2187 Fetching feeds: 228/2187 Fetching feeds: 229/2187 Fetching feeds: 230/2187 Fetching feeds: 231/2187 Fetching feeds: 232/2187 Fetching feeds: 233/2187 Fetching feeds: 234/2187 Fetching feeds: 235/2187 Fetching feeds: 236/2187 Fetching feeds: 237/2187 Fetching feeds: 238/2187 Fetching feeds: 239/2187 Fetching feeds: 240/2187 Fetching feeds: 241/2187 Fetching feeds: 242/2187 Fetching feeds: 243/2187 Fetching feeds: 244/2187 Fetching feeds: 245/2187 Fetching feeds: 246/2187 Fetching feeds: 247/2187 Fetching feeds: 248/2187 Fetching feeds: 249/2187 Fetching feeds: 250/2187 Fetching feeds: 251/2187 Fetching feeds: 252/2187 Fetching feeds: 253/2187 Fetching feeds: 254/2187 Fetching feeds: 255/2187 Fetching feeds: 256/2187 Fetching feeds: 257/2187 Fetching feeds: 258/2187 Fetching feeds: 259/2187 Fetching feeds: 260/2187 Fetching feeds: 261/2187 Fetching feeds: 262/2187 Fetching feeds: 263/2187 Fetching feeds: 264/2187 Fetching feeds: 265/2187 Fetching feeds: 266/2187 Fetching feeds: 267/2187 Fetching feeds: 268/2187 Fetching feeds: 269/2187 Fetching feeds: 270/2187 Fetching feeds: 271/2187 Fetching feeds: 272/2187 Fetching feeds: 273/2187 Fetching feeds: 274/2187 Fetching feeds: 275/2187 Fetching feeds: 276/2187 Fetching feeds: 277/2187 Fetching feeds: 278/2187 Fetching feeds: 279/2187 Fetching feeds: 280/2187 Fetching feeds: 281/2187 Fetching feeds: 282/2187 Fetching feeds: 283/2187 Fetching feeds: 284/2187 Fetching feeds: 285/2187 Fetching feeds: 286/2187 Fetching feeds: 287/2187 Fetching feeds: 288/2187 Fetching feeds: 289/2187 Fetching feeds: 290/2187 Fetching feeds: 291/2187 Fetching feeds: 292/2187 Fetching feeds: 293/2187 Fetching feeds: 294/2187 Fetching feeds: 295/2187 Fetching feeds: 296/2187 Fetching feeds: 297/2187 Fetching feeds: 298/2187 Fetching feeds: 299/2187 Fetching feeds: 300/2187 Fetching feeds: 301/2187 Fetching feeds: 302/2187 Fetching feeds: 303/2187 Fetching feeds: 304/2187 Fetching feeds: 305/2187 Fetching feeds: 306/2187 Fetching feeds: 307/2187 Fetching feeds: 308/2187 Fetching feeds: 309/2187 Fetching feeds: 310/2187 Fetching feeds: 311/2187 Fetching feeds: 312/2187 Fetching feeds: 313/2187 Fetching feeds: 314/2187 Fetching feeds: 315/2187 Fetching feeds: 316/2187 Fetching feeds: 317/2187 Fetching feeds: 318/2187 Fetching feeds: 319/2187 Fetching feeds: 320/2187 Fetching feeds: 321/2187 Fetching feeds: 322/2187 Fetching feeds: 323/2187 Fetching feeds: 324/2187 Fetching feeds: 325/2187 Fetching feeds: 326/2187 Fetching feeds: 327/2187 Fetching feeds: 328/2187 Fetching feeds: 329/2187 Fetching feeds: 330/2187 Fetching feeds: 331/2187 Fetching feeds: 332/2187 Fetching feeds: 333/2187 Fetching feeds: 334/2187 Fetching feeds: 335/2187 Fetching feeds: 336/2187 Fetching feeds: 337/2187 Fetching feeds: 338/2187 Fetching feeds: 339/2187 Fetching feeds: 340/2187 Fetching feeds: 341/2187 Fetching feeds: 342/2187 Fetching feeds: 343/2187 Fetching feeds: 344/2187 Fetching feeds: 345/2187 Fetching feeds: 346/2187 Fetching feeds: 347/2187 Fetching feeds: 348/2187 Fetching feeds: 349/2187 Fetching feeds: 350/2187 Fetching feeds: 351/2187 Fetching feeds: 352/2187 Fetching feeds: 353/2187 Fetching feeds: 354/2187 Fetching feeds: 355/2187 Fetching feeds: 356/2187 Fetching feeds: 357/2187 Fetching feeds: 358/2187 Fetching feeds: 359/2187 Fetching feeds: 360/2187 Fetching feeds: 361/2187 Fetching feeds: 362/2187 Fetching feeds: 363/2187 Fetching feeds: 364/2187 Fetching feeds: 365/2187 Fetching feeds: 366/2187 Fetching feeds: 367/2187 Fetching feeds: 368/2187 Fetching feeds: 369/2187 Fetching feeds: 370/2187 Fetching feeds: 371/2187 Fetching feeds: 372/2187 Fetching feeds: 373/2187 Fetching feeds: 374/2187 Fetching feeds: 375/2187 Fetching feeds: 376/2187 Fetching feeds: 377/2187 Fetching feeds: 378/2187 Fetching feeds: 379/2187 Fetching feeds: 380/2187 Fetching feeds: 381/2187 Fetching feeds: 382/2187 Fetching feeds: 383/2187 Fetching feeds: 384/2187 Fetching feeds: 385/2187 Fetching feeds: 386/2187 Fetching feeds: 387/2187 Fetching feeds: 388/2187 Fetching feeds: 389/2187 Fetching feeds: 390/2187 Fetching feeds: 391/2187 Fetching feeds: 392/2187 Fetching feeds: 393/2187 Fetching feeds: 394/2187 Fetching feeds: 395/2187 Fetching feeds: 396/2187 Fetching feeds: 397/2187 Fetching feeds: 398/2187 Fetching feeds: 399/2187 Fetching feeds: 400/2187 Fetching feeds: 401/2187 Fetching feeds: 402/2187 Fetching feeds: 403/2187 Fetching feeds: 404/2187 Fetching feeds: 405/2187 Fetching feeds: 406/2187 Fetching feeds: 407/2187 Fetching feeds: 408/2187 Fetching feeds: 409/2187 Fetching feeds: 410/2187 Fetching feeds: 411/2187 Fetching feeds: 412/2187 Fetching feeds: 413/2187 Fetching feeds: 414/2187 Fetching feeds: 415/2187 Fetching feeds: 416/2187 Fetching feeds: 417/2187 Fetching feeds: 418/2187 Fetching feeds: 419/2187 Fetching feeds: 420/2187 Fetching feeds: 421/2187 Fetching feeds: 422/2187 Fetching feeds: 423/2187 Fetching feeds: 424/2187 Fetching feeds: 425/2187 Fetching feeds: 426/2187 Fetching feeds: 427/2187 Fetching feeds: 428/2187 Fetching feeds: 429/2187 Fetching feeds: 430/2187 Fetching feeds: 431/2187 Fetching feeds: 432/2187 Fetching feeds: 433/2187 Fetching feeds: 434/2187 Fetching feeds: 435/2187 Fetching feeds: 436/2187 Fetching feeds: 437/2187 Fetching feeds: 438/2187 Fetching feeds: 439/2187 Fetching feeds: 440/2187 Fetching feeds: 441/2187 Fetching feeds: 442/2187 Fetching feeds: 443/2187 Fetching feeds: 444/2187 Fetching feeds: 445/2187 Fetching feeds: 446/2187 Fetching feeds: 447/2187 Fetching feeds: 448/2187 Fetching feeds: 449/2187 Fetching feeds: 450/2187 Fetching feeds: 451/2187 Fetching feeds: 452/2187 Fetching feeds: 453/2187 Fetching feeds: 454/2187 Fetching feeds: 455/2187 Fetching feeds: 456/2187 Fetching feeds: 457/2187 Fetching feeds: 458/2187 Fetching feeds: 459/2187 Fetching feeds: 460/2187 Fetching feeds: 461/2187 Fetching feeds: 462/2187 Fetching feeds: 463/2187 Fetching feeds: 464/2187 Fetching feeds: 465/2187 Fetching feeds: 466/2187 Fetching feeds: 467/2187 Fetching feeds: 468/2187 Fetching feeds: 469/2187 Fetching feeds: 470/2187 Fetching feeds: 471/2187 Fetching feeds: 472/2187 Fetching feeds: 473/2187 Fetching feeds: 474/2187 Fetching feeds: 475/2187 Fetching feeds: 476/2187 Fetching feeds: 477/2187 Fetching feeds: 478/2187 Fetching feeds: 479/2187 Fetching feeds: 480/2187 Fetching feeds: 481/2187 Fetching feeds: 482/2187 Fetching feeds: 483/2187 Fetching feeds: 484/2187 Fetching feeds: 485/2187 Fetching feeds: 486/2187 Fetching feeds: 487/2187 Fetching feeds: 488/2187 Fetching feeds: 489/2187 Fetching feeds: 490/2187 Fetching feeds: 491/2187 Fetching feeds: 492/2187 Fetching feeds: 493/2187 Fetching feeds: 494/2187 Fetching feeds: 495/2187 Fetching feeds: 496/2187 Fetching feeds: 497/2187 Fetching feeds: 498/2187 Fetching feeds: 499/2187 Fetching feeds: 500/2187 Fetching feeds: 501/2187 Fetching feeds: 502/2187 Fetching feeds: 503/2187 Fetching feeds: 504/2187 Fetching feeds: 505/2187 Fetching feeds: 506/2187 Fetching feeds: 507/2187 Fetching feeds: 508/2187 Fetching feeds: 509/2187 Fetching feeds: 510/2187 Fetching feeds: 511/2187 Fetching feeds: 512/2187 Fetching feeds: 513/2187 Fetching feeds: 514/2187 Fetching feeds: 515/2187 Fetching feeds: 516/2187 Fetching feeds: 517/2187 Fetching feeds: 518/2187 Fetching feeds: 519/2187 Fetching feeds: 520/2187 Fetching feeds: 521/2187 Fetching feeds: 522/2187 Fetching feeds: 523/2187 Fetching feeds: 524/2187 Fetching feeds: 525/2187 Fetching feeds: 526/2187 Fetching feeds: 527/2187 Fetching feeds: 528/2187 Fetching feeds: 529/2187 Fetching feeds: 530/2187 Fetching feeds: 531/2187 Fetching feeds: 532/2187 Fetching feeds: 533/2187 Fetching feeds: 534/2187 Fetching feeds: 535/2187 Fetching feeds: 536/2187 Fetching feeds: 537/2187 Fetching feeds: 538/2187 Fetching feeds: 539/2187 Fetching feeds: 540/2187 Fetching feeds: 541/2187 Fetching feeds: 542/2187 Fetching feeds: 543/2187 Fetching feeds: 544/2187 Fetching feeds: 545/2187 Fetching feeds: 546/2187 Fetching feeds: 547/2187 Fetching feeds: 548/2187 Fetching feeds: 549/2187 Fetching feeds: 550/2187 Fetching feeds: 551/2187 Fetching feeds: 552/2187 Fetching feeds: 553/2187 Fetching feeds: 554/2187 Fetching feeds: 555/2187 Fetching feeds: 556/2187 Fetching feeds: 557/2187 Fetching feeds: 558/2187 Fetching feeds: 559/2187 Fetching feeds: 560/2187 Fetching feeds: 561/2187 Fetching feeds: 562/2187 Fetching feeds: 563/2187 Fetching feeds: 564/2187 Fetching feeds: 565/2187 Fetching feeds: 566/2187 Fetching feeds: 567/2187 Fetching feeds: 568/2187 Fetching feeds: 569/2187 Fetching feeds: 570/2187 Fetching feeds: 571/2187 Fetching feeds: 572/2187 Fetching feeds: 573/2187 Fetching feeds: 574/2187 Fetching feeds: 575/2187 Fetching feeds: 576/2187 Fetching feeds: 577/2187 Fetching feeds: 578/2187 Fetching feeds: 579/2187 Fetching feeds: 580/2187 Fetching feeds: 581/2187 Fetching feeds: 582/2187 Fetching feeds: 583/2187 Fetching feeds: 584/2187 Fetching feeds: 585/2187 Fetching feeds: 586/2187 Fetching feeds: 587/2187 Fetching feeds: 588/2187 Fetching feeds: 589/2187 Fetching feeds: 590/2187 Fetching feeds: 591/2187 Fetching feeds: 592/2187 Fetching feeds: 593/2187 Fetching feeds: 594/2187 Fetching feeds: 595/2187 Fetching feeds: 596/2187 Fetching feeds: 597/2187 Fetching feeds: 598/2187 Fetching feeds: 599/2187 Fetching feeds: 600/2187 Fetching feeds: 601/2187 Fetching feeds: 602/2187 Fetching feeds: 603/2187 Fetching feeds: 604/2187 Fetching feeds: 605/2187 Fetching feeds: 606/2187 Fetching feeds: 607/2187 Fetching feeds: 608/2187 Fetching feeds: 609/2187 Fetching feeds: 610/2187 Fetching feeds: 611/2187 Fetching feeds: 612/2187 Fetching feeds: 613/2187 Fetching feeds: 614/2187 Fetching feeds: 615/2187 Fetching feeds: 616/2187 Fetching feeds: 617/2187 Fetching feeds: 618/2187 Fetching feeds: 619/2187 Fetching feeds: 620/2187 Fetching feeds: 621/2187 Fetching feeds: 622/2187 Fetching feeds: 623/2187 Fetching feeds: 624/2187 Fetching feeds: 625/2187 Fetching feeds: 626/2187 Fetching feeds: 627/2187 Fetching feeds: 628/2187 Fetching feeds: 629/2187 Fetching feeds: 630/2187 Fetching feeds: 631/2187 Fetching feeds: 632/2187 Fetching feeds: 633/2187 Fetching feeds: 634/2187 Fetching feeds: 635/2187 Fetching feeds: 636/2187 Fetching feeds: 637/2187 Fetching feeds: 638/2187 Fetching feeds: 639/2187 Fetching feeds: 640/2187 Fetching feeds: 641/2187 Fetching feeds: 642/2187 Fetching feeds: 643/2187 Fetching feeds: 644/2187 Fetching feeds: 645/2187 Fetching feeds: 646/2187 Fetching feeds: 647/2187 Fetching feeds: 648/2187 Fetching feeds: 649/2187 Fetching feeds: 650/2187 Fetching feeds: 651/2187 Fetching feeds: 652/2187 Fetching feeds: 653/2187 Fetching feeds: 654/2187 Fetching feeds: 655/2187 Fetching feeds: 656/2187 Fetching feeds: 657/2187 Fetching feeds: 658/2187 Fetching feeds: 659/2187 Fetching feeds: 660/2187 Fetching feeds: 661/2187 Fetching feeds: 662/2187 Fetching feeds: 663/2187 Fetching feeds: 664/2187 Fetching feeds: 665/2187 Fetching feeds: 666/2187 Fetching feeds: 667/2187 Fetching feeds: 668/2187 Fetching feeds: 669/2187 Fetching feeds: 670/2187 Fetching feeds: 671/2187 Fetching feeds: 672/2187 Fetching feeds: 673/2187 Fetching feeds: 674/2187 Fetching feeds: 675/2187 Fetching feeds: 676/2187 Fetching feeds: 677/2187 Fetching feeds: 678/2187 Fetching feeds: 679/2187 Fetching feeds: 680/2187 Fetching feeds: 681/2187 Fetching feeds: 682/2187 Fetching feeds: 683/2187 Fetching feeds: 684/2187 Fetching feeds: 685/2187 Fetching feeds: 686/2187 Fetching feeds: 687/2187 Fetching feeds: 688/2187 Fetching feeds: 689/2187 Fetching feeds: 690/2187 Fetching feeds: 691/2187 Fetching feeds: 692/2187 Fetching feeds: 693/2187 Fetching feeds: 694/2187 Fetching feeds: 695/2187 Fetching feeds: 696/2187 Fetching feeds: 697/2187 Fetching feeds: 698/2187 Fetching feeds: 699/2187 Fetching feeds: 700/2187 Fetching feeds: 701/2187 Fetching feeds: 702/2187 Fetching feeds: 703/2187 Fetching feeds: 704/2187 Fetching feeds: 705/2187 Fetching feeds: 706/2187 Fetching feeds: 707/2187 Fetching feeds: 708/2187 Fetching feeds: 709/2187 Fetching feeds: 710/2187 Fetching feeds: 711/2187 Fetching feeds: 712/2187 Fetching feeds: 713/2187 Fetching feeds: 714/2187 Fetching feeds: 715/2187 Fetching feeds: 716/2187 Fetching feeds: 717/2187 Fetching feeds: 718/2187 Fetching feeds: 719/2187 Fetching feeds: 720/2187 Fetching feeds: 721/2187 Fetching feeds: 722/2187 Fetching feeds: 723/2187 Fetching feeds: 724/2187 Fetching feeds: 725/2187 Fetching feeds: 726/2187 Fetching feeds: 727/2187 Fetching feeds: 728/2187 Fetching feeds: 729/2187 Fetching feeds: 730/2187 Fetching feeds: 731/2187 Fetching feeds: 732/2187 Fetching feeds: 733/2187 Fetching feeds: 734/2187 Fetching feeds: 735/2187 Fetching feeds: 736/2187 Fetching feeds: 737/2187 Fetching feeds: 738/2187 Fetching feeds: 739/2187 Fetching feeds: 740/2187 Fetching feeds: 741/2187 Fetching feeds: 742/2187 Fetching feeds: 743/2187 Fetching feeds: 744/2187 Fetching feeds: 745/2187 Fetching feeds: 746/2187 Fetching feeds: 747/2187 Fetching feeds: 748/2187 Fetching feeds: 749/2187 Fetching feeds: 750/2187 Fetching feeds: 751/2187 Fetching feeds: 752/2187 Fetching feeds: 753/2187 Fetching feeds: 754/2187 Fetching feeds: 755/2187 Fetching feeds: 756/2187 Fetching feeds: 757/2187 Fetching feeds: 758/2187 Fetching feeds: 759/2187 Fetching feeds: 760/2187 Fetching feeds: 761/2187 Fetching feeds: 762/2187 Fetching feeds: 763/2187 Fetching feeds: 764/2187 Fetching feeds: 765/2187 Fetching feeds: 766/2187 Fetching feeds: 767/2187 Fetching feeds: 768/2187 Fetching feeds: 769/2187 Fetching feeds: 770/2187 Fetching feeds: 771/2187 Fetching feeds: 772/2187 Fetching feeds: 773/2187 Fetching feeds: 774/2187 Fetching feeds: 775/2187 Fetching feeds: 776/2187 Fetching feeds: 777/2187 Fetching feeds: 778/2187 Fetching feeds: 779/2187 Fetching feeds: 780/2187 Fetching feeds: 781/2187 Fetching feeds: 782/2187 Fetching feeds: 783/2187 Fetching feeds: 784/2187 Fetching feeds: 785/2187 Fetching feeds: 786/2187 Fetching feeds: 787/2187 Fetching feeds: 788/2187 Fetching feeds: 789/2187 Fetching feeds: 790/2187 Fetching feeds: 791/2187 Fetching feeds: 792/2187 Fetching feeds: 793/2187 Fetching feeds: 794/2187 Fetching feeds: 795/2187 Fetching feeds: 796/2187 Fetching feeds: 797/2187 Fetching feeds: 798/2187 Fetching feeds: 799/2187 Fetching feeds: 800/2187 Fetching feeds: 801/2187 Fetching feeds: 802/2187 Fetching feeds: 803/2187 Fetching feeds: 804/2187 Fetching feeds: 805/2187 Fetching feeds: 806/2187 Fetching feeds: 807/2187 Fetching feeds: 808/2187 Fetching feeds: 809/2187 Fetching feeds: 810/2187 Fetching feeds: 811/2187 Fetching feeds: 812/2187 Fetching feeds: 813/2187 Fetching feeds: 814/2187 Fetching feeds: 815/2187 Fetching feeds: 816/2187 Fetching feeds: 817/2187 Fetching feeds: 818/2187 Fetching feeds: 819/2187 Fetching feeds: 820/2187 Fetching feeds: 821/2187 Fetching feeds: 822/2187 Fetching feeds: 823/2187 Fetching feeds: 824/2187 Fetching feeds: 825/2187 Fetching feeds: 826/2187 Fetching feeds: 827/2187 Fetching feeds: 828/2187 Fetching feeds: 829/2187 Fetching feeds: 830/2187 Fetching feeds: 831/2187 Fetching feeds: 832/2187 Fetching feeds: 833/2187 Fetching feeds: 834/2187 Fetching feeds: 835/2187 Fetching feeds: 836/2187 Fetching feeds: 837/2187 Fetching feeds: 838/2187 Fetching feeds: 839/2187 Fetching feeds: 840/2187 Fetching feeds: 841/2187 Fetching feeds: 842/2187 Fetching feeds: 843/2187 Fetching feeds: 844/2187 Fetching feeds: 845/2187 Fetching feeds: 846/2187 Fetching feeds: 847/2187 Fetching feeds: 848/2187 Fetching feeds: 849/2187 Fetching feeds: 850/2187 Fetching feeds: 851/2187 Fetching feeds: 852/2187 Fetching feeds: 853/2187 Fetching feeds: 854/2187 Fetching feeds: 855/2187 Fetching feeds: 856/2187 Fetching feeds: 857/2187 Fetching feeds: 858/2187 Fetching feeds: 859/2187 Fetching feeds: 860/2187 Fetching feeds: 861/2187 Fetching feeds: 862/2187 Fetching feeds: 863/2187 Fetching feeds: 864/2187 Fetching feeds: 865/2187 Fetching feeds: 866/2187 Fetching feeds: 867/2187 Fetching feeds: 868/2187 Fetching feeds: 869/2187 Fetching feeds: 870/2187 Fetching feeds: 871/2187 Fetching feeds: 872/2187 Fetching feeds: 873/2187 Fetching feeds: 874/2187 Fetching feeds: 875/2187 Fetching feeds: 876/2187 Fetching feeds: 877/2187 Fetching feeds: 878/2187 Fetching feeds: 879/2187 Fetching feeds: 880/2187 Fetching feeds: 881/2187 Fetching feeds: 882/2187 Fetching feeds: 883/2187 Fetching feeds: 884/2187 Fetching feeds: 885/2187 Fetching feeds: 886/2187 Fetching feeds: 887/2187 Fetching feeds: 888/2187 Fetching feeds: 889/2187 Fetching feeds: 890/2187 Fetching feeds: 891/2187 Fetching feeds: 892/2187 Fetching feeds: 893/2187 Fetching feeds: 894/2187 Fetching feeds: 895/2187 Fetching feeds: 896/2187 Fetching feeds: 897/2187 Fetching feeds: 898/2187 Fetching feeds: 899/2187 Fetching feeds: 900/2187 Fetching feeds: 901/2187 Fetching feeds: 902/2187 Fetching feeds: 903/2187 Fetching feeds: 904/2187 Fetching feeds: 905/2187 Fetching feeds: 906/2187 Fetching feeds: 907/2187 Fetching feeds: 908/2187 Fetching feeds: 909/2187 Fetching feeds: 910/2187 Fetching feeds: 911/2187 Fetching feeds: 912/2187 Fetching feeds: 913/2187 Fetching feeds: 914/2187 Fetching feeds: 915/2187 Fetching feeds: 916/2187 Fetching feeds: 917/2187 Fetching feeds: 918/2187 Fetching feeds: 919/2187 Fetching feeds: 920/2187 Fetching feeds: 921/2187 Fetching feeds: 922/2187 Fetching feeds: 923/2187 Fetching feeds: 924/2187 Fetching feeds: 925/2187 Fetching feeds: 926/2187 Fetching feeds: 927/2187 Fetching feeds: 928/2187 Fetching feeds: 929/2187 Fetching feeds: 930/2187 Fetching feeds: 931/2187 Fetching feeds: 932/2187 Fetching feeds: 933/2187 Fetching feeds: 934/2187 Fetching feeds: 935/2187 Fetching feeds: 936/2187 Fetching feeds: 937/2187 Fetching feeds: 938/2187 Fetching feeds: 939/2187 Fetching feeds: 940/2187 Fetching feeds: 941/2187 Fetching feeds: 942/2187 Fetching feeds: 943/2187 Fetching feeds: 944/2187 Fetching feeds: 945/2187 Fetching feeds: 946/2187 Fetching feeds: 947/2187 Fetching feeds: 948/2187 Fetching feeds: 949/2187 Fetching feeds: 950/2187 Fetching feeds: 951/2187 Fetching feeds: 952/2187 Fetching feeds: 953/2187 Fetching feeds: 954/2187 Fetching feeds: 955/2187 Fetching feeds: 956/2187 Fetching feeds: 957/2187 Fetching feeds: 958/2187 Fetching feeds: 959/2187 Fetching feeds: 960/2187 Fetching feeds: 961/2187 Fetching feeds: 962/2187 Fetching feeds: 963/2187 Fetching feeds: 964/2187 Fetching feeds: 965/2187 Fetching feeds: 966/2187 Fetching feeds: 967/2187 Fetching feeds: 968/2187 Fetching feeds: 969/2187 Fetching feeds: 970/2187 Fetching feeds: 971/2187 Fetching feeds: 972/2187 Fetching feeds: 973/2187 Fetching feeds: 974/2187 Fetching feeds: 975/2187 Fetching feeds: 976/2187 Fetching feeds: 977/2187 Fetching feeds: 978/2187 Fetching feeds: 979/2187 Fetching feeds: 980/2187 Fetching feeds: 981/2187 Fetching feeds: 982/2187 Fetching feeds: 983/2187 Fetching feeds: 984/2187 Fetching feeds: 985/2187 Fetching feeds: 986/2187 Fetching feeds: 987/2187 Fetching feeds: 988/2187 Fetching feeds: 989/2187 Fetching feeds: 990/2187 Fetching feeds: 991/2187 Fetching feeds: 992/2187 Fetching feeds: 993/2187 Fetching feeds: 994/2187 Fetching feeds: 995/2187 Fetching feeds: 996/2187 Fetching feeds: 997/2187 Fetching feeds: 998/2187 Fetching feeds: 999/2187 Fetching feeds: 1000/2187 Fetching feeds: 1001/2187 Fetching feeds: 1002/2187 Fetching feeds: 1003/2187 Fetching feeds: 1004/2187 Fetching feeds: 1005/2187 Fetching feeds: 1006/2187 Fetching feeds: 1007/2187 Fetching feeds: 1008/2187 Fetching feeds: 1009/2187 Fetching feeds: 1010/2187 Fetching feeds: 1011/2187 Fetching feeds: 1012/2187 Fetching feeds: 1013/2187 Fetching feeds: 1014/2187 Fetching feeds: 1015/2187 Fetching feeds: 1016/2187 Fetching feeds: 1017/2187 Fetching feeds: 1018/2187 Fetching feeds: 1019/2187 Fetching feeds: 1020/2187 Fetching feeds: 1021/2187 Fetching feeds: 1022/2187 Fetching feeds: 1023/2187 Fetching feeds: 1024/2187 Fetching feeds: 1025/2187 Fetching feeds: 1026/2187 Fetching feeds: 1027/2187 Fetching feeds: 1028/2187 Fetching feeds: 1029/2187 Fetching feeds: 1030/2187 Fetching feeds: 1031/2187 Fetching feeds: 1032/2187 Fetching feeds: 1033/2187 Fetching feeds: 1034/2187 Fetching feeds: 1035/2187 Fetching feeds: 1036/2187 Fetching feeds: 1037/2187 Fetching feeds: 1038/2187 Fetching feeds: 1039/2187 Fetching feeds: 1040/2187 Fetching feeds: 1041/2187 Fetching feeds: 1042/2187 Fetching feeds: 1043/2187 Fetching feeds: 1044/2187 Fetching feeds: 1045/2187 Fetching feeds: 1046/2187 Fetching feeds: 1047/2187 Fetching feeds: 1048/2187 Fetching feeds: 1049/2187 Fetching feeds: 1050/2187 Fetching feeds: 1051/2187 Fetching feeds: 1052/2187 Fetching feeds: 1053/2187 Fetching feeds: 1054/2187 Fetching feeds: 1055/2187 Fetching feeds: 1056/2187 Fetching feeds: 1057/2187 Fetching feeds: 1058/2187 Fetching feeds: 1059/2187 Fetching feeds: 1060/2187 Fetching feeds: 1061/2187 Fetching feeds: 1062/2187 Fetching feeds: 1063/2187 Fetching feeds: 1064/2187 Fetching feeds: 1065/2187 Fetching feeds: 1066/2187 Fetching feeds: 1067/2187 Fetching feeds: 1068/2187 Fetching feeds: 1069/2187 Fetching feeds: 1070/2187 Fetching feeds: 1071/2187 Fetching feeds: 1072/2187 Fetching feeds: 1073/2187 Fetching feeds: 1074/2187 Fetching feeds: 1075/2187 Fetching feeds: 1076/2187 Fetching feeds: 1077/2187 Fetching feeds: 1078/2187 Fetching feeds: 1079/2187 Fetching feeds: 1080/2187 Fetching feeds: 1081/2187 Fetching feeds: 1082/2187 Fetching feeds: 1083/2187 Fetching feeds: 1084/2187 Fetching feeds: 1085/2187 Fetching feeds: 1086/2187 Fetching feeds: 1087/2187 Fetching feeds: 1088/2187 Fetching feeds: 1089/2187 Fetching feeds: 1090/2187 Fetching feeds: 1091/2187 Fetching feeds: 1092/2187 Fetching feeds: 1093/2187 Fetching feeds: 1094/2187 Fetching feeds: 1095/2187 Fetching feeds: 1096/2187 Fetching feeds: 1097/2187 Fetching feeds: 1098/2187 Fetching feeds: 1099/2187 Fetching feeds: 1100/2187 Fetching feeds: 1101/2187 Fetching feeds: 1102/2187 Fetching feeds: 1103/2187 Fetching feeds: 1104/2187 Fetching feeds: 1105/2187 Fetching feeds: 1106/2187 Fetching feeds: 1107/2187 Fetching feeds: 1108/2187 Fetching feeds: 1109/2187 Fetching feeds: 1110/2187 Fetching feeds: 1111/2187 Fetching feeds: 1112/2187 Fetching feeds: 1113/2187 Fetching feeds: 1114/2187 Fetching feeds: 1115/2187 Fetching feeds: 1116/2187 Fetching feeds: 1117/2187 Fetching feeds: 1118/2187 Fetching feeds: 1119/2187 Fetching feeds: 1120/2187 Fetching feeds: 1121/2187 Fetching feeds: 1122/2187 Fetching feeds: 1123/2187 Fetching feeds: 1124/2187 Fetching feeds: 1125/2187 Fetching feeds: 1126/2187 Fetching feeds: 1127/2187 Fetching feeds: 1128/2187 Fetching feeds: 1129/2187 Fetching feeds: 1130/2187 Fetching feeds: 1131/2187 Fetching feeds: 1132/2187 Fetching feeds: 1133/2187 Fetching feeds: 1134/2187 Fetching feeds: 1135/2187 Fetching feeds: 1136/2187 Fetching feeds: 1137/2187 Fetching feeds: 1138/2187 Fetching feeds: 1139/2187 Fetching feeds: 1140/2187 Fetching feeds: 1141/2187 Fetching feeds: 1142/2187 Fetching feeds: 1143/2187 Fetching feeds: 1144/2187 Fetching feeds: 1145/2187 Fetching feeds: 1146/2187 Fetching feeds: 1147/2187 Fetching feeds: 1148/2187 Fetching feeds: 1149/2187 Fetching feeds: 1150/2187 Fetching feeds: 1151/2187 Fetching feeds: 1152/2187 Fetching feeds: 1153/2187 Fetching feeds: 1154/2187 Fetching feeds: 1155/2187 Fetching feeds: 1156/2187 Fetching feeds: 1157/2187 Fetching feeds: 1158/2187 Fetching feeds: 1159/2187 Fetching feeds: 1160/2187 Fetching feeds: 1161/2187 Fetching feeds: 1162/2187 Fetching feeds: 1163/2187 Fetching feeds: 1164/2187 Fetching feeds: 1165/2187 Fetching feeds: 1166/2187 Fetching feeds: 1167/2187 Fetching feeds: 1168/2187 Fetching feeds: 1169/2187 Fetching feeds: 1170/2187 Fetching feeds: 1171/2187 Fetching feeds: 1172/2187 Fetching feeds: 1173/2187 Fetching feeds: 1174/2187 Fetching feeds: 1175/2187 Fetching feeds: 1176/2187 Fetching feeds: 1177/2187 Fetching feeds: 1178/2187 Fetching feeds: 1179/2187 Fetching feeds: 1180/2187 Fetching feeds: 1181/2187 Fetching feeds: 1182/2187 Fetching feeds: 1183/2187 Fetching feeds: 1184/2187 Fetching feeds: 1185/2187 Fetching feeds: 1186/2187 Fetching feeds: 1187/2187 Fetching feeds: 1188/2187 Fetching feeds: 1189/2187 Fetching feeds: 1190/2187 Fetching feeds: 1191/2187 Fetching feeds: 1192/2187 Fetching feeds: 1193/2187 Fetching feeds: 1194/2187 Fetching feeds: 1195/2187 Fetching feeds: 1196/2187 Fetching feeds: 1197/2187 Fetching feeds: 1198/2187 Fetching feeds: 1199/2187 Fetching feeds: 1200/2187 Fetching feeds: 1201/2187 Fetching feeds: 1202/2187 Fetching feeds: 1203/2187 Fetching feeds: 1204/2187 Fetching feeds: 1205/2187 Fetching feeds: 1206/2187 Fetching feeds: 1207/2187 Fetching feeds: 1208/2187 Fetching feeds: 1209/2187 Fetching feeds: 1210/2187 Fetching feeds: 1211/2187 Fetching feeds: 1212/2187 Fetching feeds: 1213/2187 Fetching feeds: 1214/2187 Fetching feeds: 1215/2187 Fetching feeds: 1216/2187 Fetching feeds: 1217/2187 Fetching feeds: 1218/2187 Fetching feeds: 1219/2187 Fetching feeds: 1220/2187 Fetching feeds: 1221/2187 Fetching feeds: 1222/2187 Fetching feeds: 1223/2187 Fetching feeds: 1224/2187 Fetching feeds: 1225/2187 Fetching feeds: 1226/2187 Fetching feeds: 1227/2187 Fetching feeds: 1228/2187 Fetching feeds: 1229/2187 Fetching feeds: 1230/2187 Fetching feeds: 1231/2187 Fetching feeds: 1232/2187 Fetching feeds: 1233/2187 Fetching feeds: 1234/2187 Fetching feeds: 1235/2187 Fetching feeds: 1236/2187 Fetching feeds: 1237/2187 Fetching feeds: 1238/2187 Fetching feeds: 1239/2187 Fetching feeds: 1240/2187 Fetching feeds: 1241/2187 Fetching feeds: 1242/2187 Fetching feeds: 1243/2187 Fetching feeds: 1244/2187 Fetching feeds: 1245/2187 Fetching feeds: 1246/2187 Fetching feeds: 1247/2187 Fetching feeds: 1248/2187 Fetching feeds: 1249/2187 Fetching feeds: 1250/2187 Fetching feeds: 1251/2187 Fetching feeds: 1252/2187 Fetching feeds: 1253/2187 Fetching feeds: 1254/2187 Fetching feeds: 1255/2187 Fetching feeds: 1256/2187 Fetching feeds: 1257/2187 Fetching feeds: 1258/2187 Fetching feeds: 1259/2187 Fetching feeds: 1260/2187 Fetching feeds: 1261/2187 Fetching feeds: 1262/2187 Fetching feeds: 1263/2187 Fetching feeds: 1264/2187 Fetching feeds: 1265/2187 Fetching feeds: 1266/2187 Fetching feeds: 1267/2187 Fetching feeds: 1268/2187 Fetching feeds: 1269/2187 Fetching feeds: 1270/2187 Fetching feeds: 1271/2187 Fetching feeds: 1272/2187 Fetching feeds: 1273/2187 Fetching feeds: 1274/2187 Fetching feeds: 1275/2187 Fetching feeds: 1276/2187 Fetching feeds: 1277/2187 Fetching feeds: 1278/2187 Fetching feeds: 1279/2187 Fetching feeds: 1280/2187 Fetching feeds: 1281/2187 Fetching feeds: 1282/2187 Fetching feeds: 1283/2187 Fetching feeds: 1284/2187 Fetching feeds: 1285/2187 Fetching feeds: 1286/2187 Fetching feeds: 1287/2187 Fetching feeds: 1288/2187 Fetching feeds: 1289/2187 Fetching feeds: 1290/2187 Fetching feeds: 1291/2187 Fetching feeds: 1292/2187 Fetching feeds: 1293/2187 Fetching feeds: 1294/2187 Fetching feeds: 1295/2187 Fetching feeds: 1296/2187 Fetching feeds: 1297/2187 Fetching feeds: 1298/2187 Fetching feeds: 1299/2187 Fetching feeds: 1300/2187 Fetching feeds: 1301/2187 Fetching feeds: 1302/2187 Fetching feeds: 1303/2187 Fetching feeds: 1304/2187 Fetching feeds: 1305/2187 Fetching feeds: 1306/2187 Fetching feeds: 1307/2187 Fetching feeds: 1308/2187 Fetching feeds: 1309/2187 Fetching feeds: 1310/2187 Fetching feeds: 1311/2187 Fetching feeds: 1312/2187 Fetching feeds: 1313/2187 Fetching feeds: 1314/2187 Fetching feeds: 1315/2187 Fetching feeds: 1316/2187 Fetching feeds: 1317/2187 Fetching feeds: 1318/2187 Fetching feeds: 1319/2187 Fetching feeds: 1320/2187 Fetching feeds: 1321/2187 Fetching feeds: 1322/2187 Fetching feeds: 1323/2187 Fetching feeds: 1324/2187 Fetching feeds: 1325/2187 Fetching feeds: 1326/2187 Fetching feeds: 1327/2187 Fetching feeds: 1328/2187 Fetching feeds: 1329/2187 Fetching feeds: 1330/2187 Fetching feeds: 1331/2187 Fetching feeds: 1332/2187 Fetching feeds: 1333/2187 Fetching feeds: 1334/2187 Fetching feeds: 1335/2187 Fetching feeds: 1336/2187 Fetching feeds: 1337/2187 Fetching feeds: 1338/2187 Fetching feeds: 1339/2187 Fetching feeds: 1340/2187 Fetching feeds: 1341/2187 Fetching feeds: 1342/2187 Fetching feeds: 1343/2187 Fetching feeds: 1344/2187 Fetching feeds: 1345/2187 Fetching feeds: 1346/2187 Fetching feeds: 1347/2187 Fetching feeds: 1348/2187 Fetching feeds: 1349/2187 Fetching feeds: 1350/2187 Fetching feeds: 1351/2187 Fetching feeds: 1352/2187 Fetching feeds: 1353/2187 Fetching feeds: 1354/2187 Fetching feeds: 1355/2187 Fetching feeds: 1356/2187 Fetching feeds: 1357/2187 Fetching feeds: 1358/2187 Fetching feeds: 1359/2187 Fetching feeds: 1360/2187 Fetching feeds: 1361/2187 Fetching feeds: 1362/2187 Fetching feeds: 1363/2187 Fetching feeds: 1364/2187 Fetching feeds: 1365/2187 Fetching feeds: 1366/2187 Fetching feeds: 1367/2187 Fetching feeds: 1368/2187 Fetching feeds: 1369/2187 Fetching feeds: 1370/2187 Fetching feeds: 1371/2187 Fetching feeds: 1372/2187 Fetching feeds: 1373/2187 Fetching feeds: 1374/2187 Fetching feeds: 1375/2187 Fetching feeds: 1376/2187 Fetching feeds: 1377/2187 Fetching feeds: 1378/2187 Fetching feeds: 1379/2187 Fetching feeds: 1380/2187 Fetching feeds: 1381/2187 Fetching feeds: 1382/2187 Fetching feeds: 1383/2187 Fetching feeds: 1384/2187 Fetching feeds: 1385/2187 Fetching feeds: 1386/2187 Fetching feeds: 1387/2187 Fetching feeds: 1388/2187 Fetching feeds: 1389/2187 Fetching feeds: 1390/2187 Fetching feeds: 1391/2187 Fetching feeds: 1392/2187 Fetching feeds: 1393/2187 Fetching feeds: 1394/2187 Fetching feeds: 1395/2187 Fetching feeds: 1396/2187 Fetching feeds: 1397/2187 Fetching feeds: 1398/2187 Fetching feeds: 1399/2187 Fetching feeds: 1400/2187 Fetching feeds: 1401/2187 Fetching feeds: 1402/2187 Fetching feeds: 1403/2187 Fetching feeds: 1404/2187 Fetching feeds: 1405/2187 Fetching feeds: 1406/2187 Fetching feeds: 1407/2187 Fetching feeds: 1408/2187 Fetching feeds: 1409/2187 Fetching feeds: 1410/2187 Fetching feeds: 1411/2187 Fetching feeds: 1412/2187 Fetching feeds: 1413/2187 Fetching feeds: 1414/2187 Fetching feeds: 1415/2187 Fetching feeds: 1416/2187 Fetching feeds: 1417/2187 Fetching feeds: 1418/2187 Fetching feeds: 1419/2187 Fetching feeds: 1420/2187 Fetching feeds: 1421/2187 Fetching feeds: 1422/2187 Fetching feeds: 1423/2187 Fetching feeds: 1424/2187 Fetching feeds: 1425/2187 Fetching feeds: 1426/2187 Fetching feeds: 1427/2187 Fetching feeds: 1428/2187 Fetching feeds: 1429/2187 Fetching feeds: 1430/2187 Fetching feeds: 1431/2187 Fetching feeds: 1432/2187 Fetching feeds: 1433/2187 Fetching feeds: 1434/2187 Fetching feeds: 1435/2187 Fetching feeds: 1436/2187 Fetching feeds: 1437/2187 Fetching feeds: 1438/2187 Fetching feeds: 1439/2187 Fetching feeds: 1440/2187 Fetching feeds: 1441/2187 Fetching feeds: 1442/2187 Fetching feeds: 1443/2187 Fetching feeds: 1444/2187 Fetching feeds: 1445/2187 Fetching feeds: 1446/2187 Fetching feeds: 1447/2187 Fetching feeds: 1448/2187 Fetching feeds: 1449/2187 Fetching feeds: 1450/2187 Fetching feeds: 1451/2187 Fetching feeds: 1452/2187 Fetching feeds: 1453/2187 Fetching feeds: 1454/2187 Fetching feeds: 1455/2187 Fetching feeds: 1456/2187 Fetching feeds: 1457/2187 Fetching feeds: 1458/2187 Fetching feeds: 1459/2187 Fetching feeds: 1460/2187 Fetching feeds: 1461/2187 Fetching feeds: 1462/2187 Fetching feeds: 1463/2187 Fetching feeds: 1464/2187 Fetching feeds: 1465/2187 Fetching feeds: 1466/2187 Fetching feeds: 1467/2187 Fetching feeds: 1468/2187 Fetching feeds: 1469/2187 Fetching feeds: 1470/2187 Fetching feeds: 1471/2187 Fetching feeds: 1472/2187 Fetching feeds: 1473/2187 Fetching feeds: 1474/2187 Fetching feeds: 1475/2187 Fetching feeds: 1476/2187 Fetching feeds: 1477/2187 Fetching feeds: 1478/2187 Fetching feeds: 1479/2187 Fetching feeds: 1480/2187 Fetching feeds: 1481/2187 Fetching feeds: 1482/2187 Fetching feeds: 1483/2187 Fetching feeds: 1484/2187 Fetching feeds: 1485/2187 Fetching feeds: 1486/2187 Fetching feeds: 1487/2187 Fetching feeds: 1488/2187 Fetching feeds: 1489/2187 Fetching feeds: 1490/2187 Fetching feeds: 1491/2187 Fetching feeds: 1492/2187 Fetching feeds: 1493/2187 Fetching feeds: 1494/2187 Fetching feeds: 1495/2187 Fetching feeds: 1496/2187 Fetching feeds: 1497/2187 Fetching feeds: 1498/2187 Fetching feeds: 1499/2187 Fetching feeds: 1500/2187 Fetching feeds: 1501/2187 Fetching feeds: 1502/2187 Fetching feeds: 1503/2187 Fetching feeds: 1504/2187 Fetching feeds: 1505/2187 Fetching feeds: 1506/2187 Fetching feeds: 1507/2187 Fetching feeds: 1508/2187 Fetching feeds: 1509/2187 Fetching feeds: 1510/2187 Fetching feeds: 1511/2187 Fetching feeds: 1512/2187 Fetching feeds: 1513/2187 Fetching feeds: 1514/2187 Fetching feeds: 1515/2187 Fetching feeds: 1516/2187 Fetching feeds: 1517/2187 Fetching feeds: 1518/2187 Fetching feeds: 1519/2187 Fetching feeds: 1520/2187 Fetching feeds: 1521/2187 Fetching feeds: 1522/2187 Fetching feeds: 1523/2187 Fetching feeds: 1524/2187 Fetching feeds: 1525/2187 Fetching feeds: 1526/2187 Fetching feeds: 1527/2187 Fetching feeds: 1528/2187 Fetching feeds: 1529/2187 Fetching feeds: 1530/2187 Fetching feeds: 1531/2187 Fetching feeds: 1532/2187 Fetching feeds: 1533/2187 Fetching feeds: 1534/2187 Fetching feeds: 1535/2187 Fetching feeds: 1536/2187 Fetching feeds: 1537/2187 Fetching feeds: 1538/2187 Fetching feeds: 1539/2187 Fetching feeds: 1540/2187 Fetching feeds: 1541/2187 Fetching feeds: 1542/2187 Fetching feeds: 1543/2187 Fetching feeds: 1544/2187 Fetching feeds: 1545/2187 Fetching feeds: 1546/2187 Fetching feeds: 1547/2187 Fetching feeds: 1548/2187 Fetching feeds: 1549/2187 Fetching feeds: 1550/2187 Fetching feeds: 1551/2187 Fetching feeds: 1552/2187 Fetching feeds: 1553/2187 Fetching feeds: 1554/2187 Fetching feeds: 1555/2187 Fetching feeds: 1556/2187 Fetching feeds: 1557/2187 Fetching feeds: 1558/2187 Fetching feeds: 1559/2187 Fetching feeds: 1560/2187 Fetching feeds: 1561/2187 Fetching feeds: 1562/2187 Fetching feeds: 1563/2187 Fetching feeds: 1564/2187 Fetching feeds: 1565/2187 Fetching feeds: 1566/2187 Fetching feeds: 1567/2187 Fetching feeds: 1568/2187 Fetching feeds: 1569/2187 Fetching feeds: 1570/2187 Fetching feeds: 1571/2187 Fetching feeds: 1572/2187 Fetching feeds: 1573/2187 Fetching feeds: 1574/2187 Fetching feeds: 1575/2187 Fetching feeds: 1576/2187 Fetching feeds: 1577/2187 Fetching feeds: 1578/2187 Fetching feeds: 1579/2187 Fetching feeds: 1580/2187 Fetching feeds: 1581/2187 Fetching feeds: 1582/2187 Fetching feeds: 1583/2187 Fetching feeds: 1584/2187 Fetching feeds: 1585/2187 Fetching feeds: 1586/2187 Fetching feeds: 1587/2187 Fetching feeds: 1588/2187 Fetching feeds: 1589/2187 Fetching feeds: 1590/2187 Fetching feeds: 1591/2187 Fetching feeds: 1592/2187 Fetching feeds: 1593/2187 Fetching feeds: 1594/2187 Fetching feeds: 1595/2187 Fetching feeds: 1596/2187 Fetching feeds: 1597/2187 Fetching feeds: 1598/2187 Fetching feeds: 1599/2187 Fetching feeds: 1600/2187 Fetching feeds: 1601/2187 Fetching feeds: 1602/2187 Fetching feeds: 1603/2187 Fetching feeds: 1604/2187 Fetching feeds: 1605/2187 Fetching feeds: 1606/2187 Fetching feeds: 1607/2187 Fetching feeds: 1608/2187 Fetching feeds: 1609/2187 Fetching feeds: 1610/2187 Fetching feeds: 1611/2187 Fetching feeds: 1612/2187 Fetching feeds: 1613/2187 Fetching feeds: 1614/2187 Fetching feeds: 1615/2187 Fetching feeds: 1616/2187 Fetching feeds: 1617/2187 Fetching feeds: 1618/2187 Fetching feeds: 1619/2187 Fetching feeds: 1620/2187 Fetching feeds: 1621/2187 Fetching feeds: 1622/2187 Fetching feeds: 1623/2187 Fetching feeds: 1624/2187 Fetching feeds: 1625/2187 Fetching feeds: 1626/2187 Fetching feeds: 1627/2187 Fetching feeds: 1628/2187 Fetching feeds: 1629/2187 Fetching feeds: 1630/2187 Fetching feeds: 1631/2187 Fetching feeds: 1632/2187 Fetching feeds: 1633/2187 Fetching feeds: 1634/2187 Fetching feeds: 1635/2187 Fetching feeds: 1636/2187 Fetching feeds: 1637/2187 Fetching feeds: 1638/2187 Fetching feeds: 1639/2187 Fetching feeds: 1640/2187 Fetching feeds: 1641/2187 Fetching feeds: 1642/2187 Fetching feeds: 1643/2187 Fetching feeds: 1644/2187 Fetching feeds: 1645/2187 Fetching feeds: 1646/2187 Fetching feeds: 1647/2187 Fetching feeds: 1648/2187 Fetching feeds: 1649/2187 Fetching feeds: 1650/2187 Fetching feeds: 1651/2187 Fetching feeds: 1652/2187 Fetching feeds: 1653/2187 Fetching feeds: 1654/2187 Fetching feeds: 1655/2187 Fetching feeds: 1656/2187 Fetching feeds: 1657/2187 Fetching feeds: 1658/2187 Fetching feeds: 1659/2187 Fetching feeds: 1660/2187 Fetching feeds: 1661/2187 Fetching feeds: 1662/2187 Fetching feeds: 1663/2187 Fetching feeds: 1664/2187 Fetching feeds: 1665/2187 Fetching feeds: 1666/2187 Fetching feeds: 1667/2187 Fetching feeds: 1668/2187 Fetching feeds: 1669/2187 Fetching feeds: 1670/2187 Fetching feeds: 1671/2187 Fetching feeds: 1672/2187 Fetching feeds: 1673/2187 Fetching feeds: 1674/2187 Fetching feeds: 1675/2187 Fetching feeds: 1676/2187 Fetching feeds: 1677/2187 Fetching feeds: 1678/2187 Fetching feeds: 1679/2187 Fetching feeds: 1680/2187 Fetching feeds: 1681/2187 Fetching feeds: 1682/2187 Fetching feeds: 1683/2187 Fetching feeds: 1684/2187 Fetching feeds: 1685/2187 Fetching feeds: 1686/2187 Fetching feeds: 1687/2187 Fetching feeds: 1688/2187 Fetching feeds: 1689/2187 Fetching feeds: 1690/2187 Fetching feeds: 1691/2187 Fetching feeds: 1692/2187 Fetching feeds: 1693/2187 Fetching feeds: 1694/2187 Fetching feeds: 1695/2187 Fetching feeds: 1696/2187 Fetching feeds: 1697/2187 Fetching feeds: 1698/2187 Fetching feeds: 1699/2187 Fetching feeds: 1700/2187 Fetching feeds: 1701/2187 Fetching feeds: 1702/2187 Fetching feeds: 1703/2187 Fetching feeds: 1704/2187 Fetching feeds: 1705/2187 Fetching feeds: 1706/2187 Fetching feeds: 1707/2187 Fetching feeds: 1708/2187 Fetching feeds: 1709/2187 Fetching feeds: 1710/2187 Fetching feeds: 1711/2187 Fetching feeds: 1712/2187 Fetching feeds: 1713/2187 Fetching feeds: 1714/2187 Fetching feeds: 1715/2187 Fetching feeds: 1716/2187 Fetching feeds: 1717/2187 Fetching feeds: 1718/2187 Fetching feeds: 1719/2187 Fetching feeds: 1720/2187 Fetching feeds: 1721/2187 Fetching feeds: 1722/2187 Fetching feeds: 1723/2187 Fetching feeds: 1724/2187 Fetching feeds: 1725/2187 Fetching feeds: 1726/2187 Fetching feeds: 1727/2187 Fetching feeds: 1728/2187 Fetching feeds: 1729/2187 Fetching feeds: 1730/2187 Fetching feeds: 1731/2187 Fetching feeds: 1732/2187 Fetching feeds: 1733/2187 Fetching feeds: 1734/2187 Fetching feeds: 1735/2187 Fetching feeds: 1736/2187 Fetching feeds: 1737/2187 Fetching feeds: 1738/2187 Fetching feeds: 1739/2187 Fetching feeds: 1740/2187 Fetching feeds: 1741/2187 Fetching feeds: 1742/2187 Fetching feeds: 1743/2187 Fetching feeds: 1744/2187 Fetching feeds: 1745/2187 Fetching feeds: 1746/2187 Fetching feeds: 1747/2187 Fetching feeds: 1748/2187 Fetching feeds: 1749/2187 Fetching feeds: 1750/2187 Fetching feeds: 1751/2187 Fetching feeds: 1752/2187 Fetching feeds: 1753/2187 Fetching feeds: 1754/2187 Fetching feeds: 1755/2187 Fetching feeds: 1756/2187 Fetching feeds: 1757/2187 Fetching feeds: 1758/2187 Fetching feeds: 1759/2187 Fetching feeds: 1760/2187 Fetching feeds: 1761/2187 Fetching feeds: 1762/2187 Fetching feeds: 1763/2187 Fetching feeds: 1764/2187 Fetching feeds: 1765/2187 Fetching feeds: 1766/2187 Fetching feeds: 1767/2187 Fetching feeds: 1768/2187 Fetching feeds: 1769/2187 Fetching feeds: 1770/2187 Fetching feeds: 1771/2187 Fetching feeds: 1772/2187 Fetching feeds: 1773/2187 Fetching feeds: 1774/2187 Fetching feeds: 1775/2187 Fetching feeds: 1776/2187 Fetching feeds: 1777/2187 Fetching feeds: 1778/2187 Fetching feeds: 1779/2187 Fetching feeds: 1780/2187 Fetching feeds: 1781/2187 Fetching feeds: 1782/2187 Fetching feeds: 1783/2187 Fetching feeds: 1784/2187 Fetching feeds: 1785/2187 Fetching feeds: 1786/2187 Fetching feeds: 1787/2187 Fetching feeds: 1788/2187 Fetching feeds: 1789/2187 Fetching feeds: 1790/2187 Fetching feeds: 1791/2187 Fetching feeds: 1792/2187 Fetching feeds: 1793/2187 Fetching feeds: 1794/2187 Fetching feeds: 1795/2187 Fetching feeds: 1796/2187 Fetching feeds: 1797/2187 Fetching feeds: 1798/2187 Fetching feeds: 1799/2187 Fetching feeds: 1800/2187 Fetching feeds: 1801/2187 Fetching feeds: 1802/2187 Fetching feeds: 1803/2187 Fetching feeds: 1804/2187 Fetching feeds: 1805/2187 Fetching feeds: 1806/2187 Fetching feeds: 1807/2187 Fetching feeds: 1808/2187 Fetching feeds: 1809/2187 Fetching feeds: 1810/2187 Fetching feeds: 1811/2187 Fetching feeds: 1812/2187 Fetching feeds: 1813/2187 Fetching feeds: 1814/2187 Fetching feeds: 1815/2187 Fetching feeds: 1816/2187 Fetching feeds: 1817/2187 Fetching feeds: 1818/2187 Fetching feeds: 1819/2187 Fetching feeds: 1820/2187 Fetching feeds: 1821/2187 Fetching feeds: 1822/2187 Fetching feeds: 1823/2187 Fetching feeds: 1824/2187 Fetching feeds: 1825/2187 Fetching feeds: 1826/2187 Fetching feeds: 1827/2187 Fetching feeds: 1828/2187 Fetching feeds: 1829/2187 Fetching feeds: 1830/2187 Fetching feeds: 1831/2187 Fetching feeds: 1832/2187 Fetching feeds: 1833/2187 Fetching feeds: 1834/2187 Fetching feeds: 1835/2187 Fetching feeds: 1836/2187 Fetching feeds: 1837/2187 Fetching feeds: 1838/2187 Fetching feeds: 1839/2187 Fetching feeds: 1840/2187 Fetching feeds: 1841/2187 Fetching feeds: 1842/2187 Fetching feeds: 1843/2187 Fetching feeds: 1844/2187 Fetching feeds: 1845/2187 Fetching feeds: 1846/2187 Fetching feeds: 1847/2187 Fetching feeds: 1848/2187 Fetching feeds: 1849/2187 Fetching feeds: 1850/2187 Fetching feeds: 1851/2187 Fetching feeds: 1852/2187 Fetching feeds: 1853/2187 Fetching feeds: 1854/2187 Fetching feeds: 1855/2187 Fetching feeds: 1856/2187 Fetching feeds: 1857/2187 Fetching feeds: 1858/2187 Fetching feeds: 1859/2187 Fetching feeds: 1860/2187 Fetching feeds: 1861/2187 Fetching feeds: 1862/2187 Fetching feeds: 1863/2187 Fetching feeds: 1864/2187 Fetching feeds: 1865/2187 Fetching feeds: 1866/2187 Fetching feeds: 1867/2187 Fetching feeds: 1868/2187 Fetching feeds: 1869/2187 Fetching feeds: 1870/2187 Fetching feeds: 1871/2187 Fetching feeds: 1872/2187 Fetching feeds: 1873/2187 Fetching feeds: 1874/2187 Fetching feeds: 1875/2187 Fetching feeds: 1876/2187 Fetching feeds: 1877/2187 Fetching feeds: 1878/2187 Fetching feeds: 1879/2187 Fetching feeds: 1880/2187 Fetching feeds: 1881/2187 Fetching feeds: 1882/2187 Fetching feeds: 1883/2187 Fetching feeds: 1884/2187 Fetching feeds: 1885/2187 Fetching feeds: 1886/2187 Fetching feeds: 1887/2187 Fetching feeds: 1888/2187 Fetching feeds: 1889/2187 Fetching feeds: 1890/2187 Fetching feeds: 1891/2187 Fetching feeds: 1892/2187 Fetching feeds: 1893/2187 Fetching feeds: 1894/2187 Fetching feeds: 1895/2187 Fetching feeds: 1896/2187 Fetching feeds: 1897/2187 Fetching feeds: 1898/2187 Fetching feeds: 1899/2187 Fetching feeds: 1900/2187 Fetching feeds: 1901/2187 Fetching feeds: 1902/2187 Fetching feeds: 1903/2187 Fetching feeds: 1904/2187 Fetching feeds: 1905/2187 Fetching feeds: 1906/2187 Fetching feeds: 1907/2187 Fetching feeds: 1908/2187 Fetching feeds: 1909/2187 Fetching feeds: 1910/2187 Fetching feeds: 1911/2187 Fetching feeds: 1912/2187 Fetching feeds: 1913/2187 Fetching feeds: 1914/2187 Fetching feeds: 1915/2187 Fetching feeds: 1916/2187 Fetching feeds: 1917/2187 Fetching feeds: 1918/2187 Fetching feeds: 1919/2187 Fetching feeds: 1920/2187 Fetching feeds: 1921/2187 Fetching feeds: 1922/2187 Fetching feeds: 1923/2187 Fetching feeds: 1924/2187 Fetching feeds: 1925/2187 Fetching feeds: 1926/2187 Fetching feeds: 1927/2187 Fetching feeds: 1928/2187 Fetching feeds: 1929/2187 Fetching feeds: 1930/2187 Fetching feeds: 1931/2187 Fetching feeds: 1932/2187 Fetching feeds: 1933/2187 Fetching feeds: 1934/2187 Fetching feeds: 1935/2187 Fetching feeds: 1936/2187 Fetching feeds: 1937/2187 Fetching feeds: 1938/2187 Fetching feeds: 1939/2187 Fetching feeds: 1940/2187 Fetching feeds: 1941/2187 Fetching feeds: 1942/2187 Fetching feeds: 1943/2187 Fetching feeds: 1944/2187 Fetching feeds: 1945/2187 Fetching feeds: 1946/2187 Fetching feeds: 1947/2187 Fetching feeds: 1948/2187 Fetching feeds: 1949/2187 Fetching feeds: 1950/2187 Fetching feeds: 1951/2187 Fetching feeds: 1952/2187 Fetching feeds: 1953/2187 Fetching feeds: 1954/2187 Fetching feeds: 1955/2187 Fetching feeds: 1956/2187 Fetching feeds: 1957/2187 Fetching feeds: 1958/2187 Fetching feeds: 1959/2187 Fetching feeds: 1960/2187 Fetching feeds: 1961/2187 Fetching feeds: 1962/2187 Fetching feeds: 1963/2187 Fetching feeds: 1964/2187 Fetching feeds: 1965/2187 Fetching feeds: 1966/2187 Fetching feeds: 1967/2187 Fetching feeds: 1968/2187 Fetching feeds: 1969/2187 Fetching feeds: 1970/2187 Fetching feeds: 1971/2187 Fetching feeds: 1972/2187 Fetching feeds: 1973/2187 Fetching feeds: 1974/2187 Fetching feeds: 1975/2187 Fetching feeds: 1976/2187 Fetching feeds: 1977/2187 Fetching feeds: 1978/2187 Fetching feeds: 1979/2187 Fetching feeds: 1980/2187 Fetching feeds: 1981/2187 Fetching feeds: 1982/2187 Fetching feeds: 1983/2187 Fetching feeds: 1984/2187 Fetching feeds: 1985/2187 Fetching feeds: 1986/2187 Fetching feeds: 1987/2187 Fetching feeds: 1988/2187 Fetching feeds: 1989/2187 Fetching feeds: 1990/2187 Fetching feeds: 1991/2187 Fetching feeds: 1992/2187 Fetching feeds: 1993/2187 Fetching feeds: 1994/2187 Fetching feeds: 1995/2187 Fetching feeds: 1996/2187 Fetching feeds: 1997/2187 Fetching feeds: 1998/2187 Fetching feeds: 1999/2187 Fetching feeds: 2000/2187 Fetching feeds: 2001/2187 Fetching feeds: 2002/2187 Fetching feeds: 2003/2187 Fetching feeds: 2004/2187 Fetching feeds: 2005/2187 Fetching feeds: 2006/2187 Fetching feeds: 2007/2187 Fetching feeds: 2008/2187 Fetching feeds: 2009/2187 Fetching feeds: 2010/2187 Fetching feeds: 2011/2187 Fetching feeds: 2012/2187 Fetching feeds: 2013/2187 Fetching feeds: 2014/2187 Fetching feeds: 2015/2187 Fetching feeds: 2016/2187 Fetching feeds: 2017/2187 Fetching feeds: 2018/2187 Fetching feeds: 2019/2187 Fetching feeds: 2020/2187 Fetching feeds: 2021/2187 Fetching feeds: 2022/2187 Fetching feeds: 2023/2187 Fetching feeds: 2024/2187 Fetching feeds: 2025/2187 Fetching feeds: 2026/2187 Fetching feeds: 2027/2187 Fetching feeds: 2028/2187 Fetching feeds: 2029/2187 Fetching feeds: 2030/2187 Fetching feeds: 2031/2187 Fetching feeds: 2032/2187 Fetching feeds: 2033/2187 Fetching feeds: 2034/2187 Fetching feeds: 2035/2187 Fetching feeds: 2036/2187 Fetching feeds: 2037/2187 Fetching feeds: 2038/2187 Fetching feeds: 2039/2187 Fetching feeds: 2040/2187 Fetching feeds: 2041/2187 Fetching feeds: 2042/2187 Fetching feeds: 2043/2187 Fetching feeds: 2044/2187 Fetching feeds: 2045/2187 Fetching feeds: 2046/2187 Fetching feeds: 2047/2187 Fetching feeds: 2048/2187 Fetching feeds: 2049/2187 Fetching feeds: 2050/2187 Fetching feeds: 2051/2187 Fetching feeds: 2052/2187 Fetching feeds: 2053/2187 Fetching feeds: 2054/2187 Fetching feeds: 2055/2187 Fetching feeds: 2056/2187 Fetching feeds: 2057/2187 Fetching feeds: 2058/2187 Fetching feeds: 2059/2187 Fetching feeds: 2060/2187 Fetching feeds: 2061/2187 Fetching feeds: 2062/2187 Fetching feeds: 2063/2187 Fetching feeds: 2064/2187 Fetching feeds: 2065/2187 Fetching feeds: 2066/2187 Fetching feeds: 2067/2187 Fetching feeds: 2068/2187 Fetching feeds: 2069/2187 Fetching feeds: 2070/2187 Fetching feeds: 2071/2187 Fetching feeds: 2072/2187 Fetching feeds: 2073/2187 Fetching feeds: 2074/2187 Fetching feeds: 2075/2187 Fetching feeds: 2076/2187 Fetching feeds: 2077/2187 Fetching feeds: 2078/2187 Fetching feeds: 2079/2187 Fetching feeds: 2080/2187 Fetching feeds: 2081/2187 Fetching feeds: 2082/2187 Fetching feeds: 2083/2187 Fetching feeds: 2084/2187 Fetching feeds: 2085/2187 Fetching feeds: 2086/2187 Fetching feeds: 2087/2187 Fetching feeds: 2088/2187 Fetching feeds: 2089/2187 Fetching feeds: 2090/2187 Fetching feeds: 2091/2187 Fetching feeds: 2092/2187 Fetching feeds: 2093/2187 Fetching feeds: 2094/2187 Fetching feeds: 2095/2187 Fetching feeds: 2096/2187 Fetching feeds: 2097/2187 Fetching feeds: 2098/2187 Fetching feeds: 2099/2187 Fetching feeds: 2100/2187 Fetching feeds: 2101/2187 Fetching feeds: 2102/2187 Fetching feeds: 2103/2187 Fetching feeds: 2104/2187 Fetching feeds: 2105/2187 Fetching feeds: 2106/2187 Fetching feeds: 2107/2187 Fetching feeds: 2108/2187 Fetching feeds: 2109/2187 Fetching feeds: 2110/2187 Fetching feeds: 2111/2187 Fetching feeds: 2112/2187 Fetching feeds: 2113/2187 Fetching feeds: 2114/2187 Fetching feeds: 2115/2187 Fetching feeds: 2116/2187 Fetching feeds: 2117/2187 Fetching feeds: 2118/2187 Fetching feeds: 2119/2187 Fetching feeds: 2120/2187 Fetching feeds: 2121/2187 Fetching feeds: 2122/2187 Fetching feeds: 2123/2187 Fetching feeds: 2124/2187 Fetching feeds: 2125/2187 Fetching feeds: 2126/2187 Fetching feeds: 2127/2187 Fetching feeds: 2128/2187 Fetching feeds: 2129/2187 Fetching feeds: 2130/2187 Fetching feeds: 2131/2187 Fetching feeds: 2132/2187 Fetching feeds: 2133/2187 Fetching feeds: 2134/2187 Fetching feeds: 2135/2187 Fetching feeds: 2136/2187 Fetching feeds: 2137/2187 Fetching feeds: 2138/2187 Fetching feeds: 2139/2187 Fetching feeds: 2140/2187 Fetching feeds: 2141/2187 Fetching feeds: 2142/2187 Fetching feeds: 2143/2187 Fetching feeds: 2144/2187 Fetching feeds: 2145/2187 Fetching feeds: 2146/2187 Fetching feeds: 2147/2187 Fetching feeds: 2148/2187 Fetching feeds: 2149/2187 Fetching feeds: 2150/2187 Fetching feeds: 2151/2187 Fetching feeds: 2152/2187 Fetching feeds: 2153/2187 Fetching feeds: 2154/2187 Fetching feeds: 2155/2187 Fetching feeds: 2156/2187 Fetching feeds: 2157/2187 Fetching feeds: 2158/2187 Fetching feeds: 2159/2187 Fetching feeds: 2160/2187 Fetching feeds: 2161/2187 Fetching feeds: 2162/2187 Fetching feeds: 2163/2187 Fetching feeds: 2164/2187 Fetching feeds: 2165/2187 Fetching feeds: 2166/2187 Fetching feeds: 2167/2187 Fetching feeds: 2168/2187 Fetching feeds: 2169/2187 Fetching feeds: 2170/2187 Fetching feeds: 2171/2187 Fetching feeds: 2172/2187 Fetching feeds: 2173/2187 Fetching feeds: 2174/2187 Fetching feeds: 2175/2187 Fetching feeds: 2176/2187 Fetching feeds: 2177/2187 Fetching feeds: 2178/2187 Fetching feeds: 2179/2187 Fetching feeds: 2180/2187 Fetching feeds: 2181/2187 Fetching feeds: 2182/2187 Fetching feeds: 2183/2187 Fetching feeds: 2184/2187 Fetching feeds: 2185/2187 Fetching feeds: 2186/2187 Fetching feeds: 2187/2187 Finished fetching feeds: 2187/2187 INFO:root:Saved raw game feeds JSON to data/20232024_raw_game_feeds.json INFO:root:Saved raw game feeds CSV to data/20232024_raw_game_feeds.csv Parsing feeds: 1/2187 Parsing feeds: 2/2187 Parsing feeds: 3/2187 Parsing feeds: 4/2187 Parsing feeds: 5/2187 Parsing feeds: 6/2187 Parsing feeds: 7/2187 Parsing feeds: 8/2187 Parsing feeds: 9/2187 Parsing feeds: 10/2187 Parsing feeds: 11/2187 Parsing feeds: 12/2187 Parsing feeds: 13/2187 Parsing feeds: 14/2187 Parsing feeds: 15/2187 Parsing feeds: 16/2187 Parsing feeds: 17/2187 Parsing feeds: 18/2187 Parsing feeds: 19/2187 Parsing feeds: 20/2187 Parsing feeds: 21/2187 Parsing feeds: 22/2187 Parsing feeds: 23/2187 Parsing feeds: 24/2187 Parsing feeds: 25/2187 Parsing feeds: 26/2187 Parsing feeds: 27/2187 Parsing feeds: 28/2187 Parsing feeds: 29/2187 Parsing feeds: 30/2187 Parsing feeds: 31/2187 Parsing feeds: 32/2187 Parsing feeds: 33/2187 Parsing feeds: 34/2187 Parsing feeds: 35/2187 Parsing feeds: 36/2187 Parsing feeds: 37/2187 Parsing feeds: 38/2187 Parsing feeds: 39/2187 Parsing feeds: 40/2187 Parsing feeds: 41/2187 Parsing feeds: 42/2187 Parsing feeds: 43/2187 Parsing feeds: 44/2187 Parsing feeds: 45/2187 Parsing feeds: 46/2187 Parsing feeds: 47/2187 Parsing feeds: 48/2187 Parsing feeds: 49/2187 Parsing feeds: 50/2187 Parsing feeds: 51/2187 Parsing feeds: 52/2187 Parsing feeds: 53/2187 Parsing feeds: 54/2187 Parsing feeds: 55/2187 Parsing feeds: 56/2187 Parsing feeds: 57/2187 Parsing feeds: 58/2187 Parsing feeds: 59/2187 Parsing feeds: 60/2187 Parsing feeds: 61/2187 Parsing feeds: 62/2187 Parsing feeds: 63/2187 Parsing feeds: 64/2187 Parsing feeds: 65/2187 Parsing feeds: 66/2187 Parsing feeds: 67/2187 Parsing feeds: 68/2187 Parsing feeds: 69/2187 Parsing feeds: 70/2187 Parsing feeds: 71/2187 Parsing feeds: 72/2187 Parsing feeds: 73/2187 Parsing feeds: 74/2187 Parsing feeds: 75/2187 Parsing feeds: 76/2187 Parsing feeds: 77/2187 Parsing feeds: 78/2187 Parsing feeds: 79/2187 Parsing feeds: 80/2187 Parsing feeds: 81/2187 Parsing feeds: 82/2187 Parsing feeds: 83/2187 Parsing feeds: 84/2187 Parsing feeds: 85/2187 Parsing feeds: 86/2187 Parsing feeds: 87/2187 Parsing feeds: 88/2187 Parsing feeds: 89/2187 Parsing feeds: 90/2187 Parsing feeds: 91/2187 Parsing feeds: 92/2187 Parsing feeds: 93/2187 Parsing feeds: 94/2187 Parsing feeds: 95/2187 Parsing feeds: 96/2187 Parsing feeds: 97/2187 Parsing feeds: 98/2187 Parsing feeds: 99/2187 Parsing feeds: 100/2187 Parsing feeds: 101/2187 Parsing feeds: 102/2187 Parsing feeds: 103/2187 Parsing feeds: 104/2187 Parsing feeds: 105/2187 Parsing feeds: 106/2187 Parsing feeds: 107/2187 Parsing feeds: 108/2187 Parsing feeds: 109/2187 Parsing feeds: 110/2187 Parsing feeds: 111/2187 Parsing feeds: 112/2187 Parsing feeds: 113/2187 Parsing feeds: 114/2187 Parsing feeds: 115/2187 Parsing feeds: 116/2187 Parsing feeds: 117/2187 Parsing feeds: 118/2187 Parsing feeds: 119/2187 Parsing feeds: 120/2187 Parsing feeds: 121/2187 Parsing feeds: 122/2187 Parsing feeds: 123/2187 Parsing feeds: 124/2187 Parsing feeds: 125/2187 Parsing feeds: 126/2187 Parsing feeds: 127/2187 Parsing feeds: 128/2187 Parsing feeds: 129/2187 Parsing feeds: 130/2187 Parsing feeds: 131/2187 Parsing feeds: 132/2187 Parsing feeds: 133/2187 Parsing feeds: 134/2187 Parsing feeds: 135/2187 Parsing feeds: 136/2187 Parsing feeds: 137/2187 Parsing feeds: 138/2187 Parsing feeds: 139/2187 Parsing feeds: 140/2187 Parsing feeds: 141/2187 Parsing feeds: 142/2187 Parsing feeds: 143/2187 Parsing feeds: 144/2187 Parsing feeds: 145/2187 Parsing feeds: 146/2187 Parsing feeds: 147/2187 Parsing feeds: 148/2187 Parsing feeds: 149/2187 Parsing feeds: 150/2187 Parsing feeds: 151/2187 Parsing feeds: 152/2187 Parsing feeds: 153/2187 Parsing feeds: 154/2187 Parsing feeds: 155/2187 Parsing feeds: 156/2187 Parsing feeds: 157/2187 Parsing feeds: 158/2187 Parsing feeds: 159/2187 Parsing feeds: 160/2187 Parsing feeds: 161/2187 Parsing feeds: 162/2187 Parsing feeds: 163/2187 Parsing feeds: 164/2187 Parsing feeds: 165/2187 Parsing feeds: 166/2187 Parsing feeds: 167/2187 Parsing feeds: 168/2187 Parsing feeds: 169/2187 Parsing feeds: 170/2187 Parsing feeds: 171/2187 Parsing feeds: 172/2187 Parsing feeds: 173/2187 Parsing feeds: 174/2187 Parsing feeds: 175/2187 Parsing feeds: 176/2187 Parsing feeds: 177/2187 Parsing feeds: 178/2187 Parsing feeds: 179/2187 Parsing feeds: 180/2187 Parsing feeds: 181/2187 Parsing feeds: 182/2187 Parsing feeds: 183/2187 Parsing feeds: 184/2187 Parsing feeds: 185/2187 Parsing feeds: 186/2187 Parsing feeds: 187/2187 Parsing feeds: 188/2187 Parsing feeds: 189/2187 Parsing feeds: 190/2187 Parsing feeds: 191/2187 Parsing feeds: 192/2187 Parsing feeds: 193/2187 Parsing feeds: 194/2187 Parsing feeds: 195/2187 Parsing feeds: 196/2187 Parsing feeds: 197/2187 Parsing feeds: 198/2187 Parsing feeds: 199/2187 Parsing feeds: 200/2187 Parsing feeds: 201/2187 Parsing feeds: 202/2187 Parsing feeds: 203/2187 Parsing feeds: 204/2187 Parsing feeds: 205/2187 Parsing feeds: 206/2187 Parsing feeds: 207/2187 Parsing feeds: 208/2187 Parsing feeds: 209/2187 Parsing feeds: 210/2187 Parsing feeds: 211/2187 Parsing feeds: 212/2187 Parsing feeds: 213/2187 Parsing feeds: 214/2187 Parsing feeds: 215/2187 Parsing feeds: 216/2187 Parsing feeds: 217/2187 Parsing feeds: 218/2187 Parsing feeds: 219/2187 Parsing feeds: 220/2187 Parsing feeds: 221/2187 Parsing feeds: 222/2187 Parsing feeds: 223/2187 Parsing feeds: 224/2187 Parsing feeds: 225/2187 Parsing feeds: 226/2187 Parsing feeds: 227/2187 Parsing feeds: 228/2187 Parsing feeds: 229/2187 Parsing feeds: 230/2187 Parsing feeds: 231/2187 Parsing feeds: 232/2187 Parsing feeds: 233/2187 Parsing feeds: 234/2187 Parsing feeds: 235/2187 Parsing feeds: 236/2187 Parsing feeds: 237/2187 Parsing feeds: 238/2187 Parsing feeds: 239/2187 Parsing feeds: 240/2187 Parsing feeds: 241/2187 Parsing feeds: 242/2187 Parsing feeds: 243/2187 Parsing feeds: 244/2187 Parsing feeds: 245/2187 Parsing feeds: 246/2187 Parsing feeds: 247/2187 Parsing feeds: 248/2187 Parsing feeds: 249/2187 Parsing feeds: 250/2187 Parsing feeds: 251/2187 Parsing feeds: 252/2187 Parsing feeds: 253/2187 Parsing feeds: 254/2187 Parsing feeds: 255/2187 Parsing feeds: 256/2187 Parsing feeds: 257/2187 Parsing feeds: 258/2187 Parsing feeds: 259/2187 Parsing feeds: 260/2187 Parsing feeds: 261/2187 Parsing feeds: 262/2187 Parsing feeds: 263/2187 Parsing feeds: 264/2187 Parsing feeds: 265/2187 Parsing feeds: 266/2187 Parsing feeds: 267/2187 Parsing feeds: 268/2187 Parsing feeds: 269/2187 Parsing feeds: 270/2187 Parsing feeds: 271/2187 Parsing feeds: 272/2187 Parsing feeds: 273/2187 Parsing feeds: 274/2187 Parsing feeds: 275/2187 Parsing feeds: 276/2187 Parsing feeds: 277/2187 Parsing feeds: 278/2187 Parsing feeds: 279/2187 Parsing feeds: 280/2187 Parsing feeds: 281/2187 Parsing feeds: 282/2187 Parsing feeds: 283/2187 Parsing feeds: 284/2187 Parsing feeds: 285/2187 Parsing feeds: 286/2187 Parsing feeds: 287/2187 Parsing feeds: 288/2187 Parsing feeds: 289/2187 Parsing feeds: 290/2187 Parsing feeds: 291/2187 Parsing feeds: 292/2187 Parsing feeds: 293/2187 Parsing feeds: 294/2187 Parsing feeds: 295/2187 Parsing feeds: 296/2187 Parsing feeds: 297/2187 Parsing feeds: 298/2187 Parsing feeds: 299/2187 Parsing feeds: 300/2187 Parsing feeds: 301/2187 Parsing feeds: 302/2187 Parsing feeds: 303/2187 Parsing feeds: 304/2187 Parsing feeds: 305/2187 Parsing feeds: 306/2187 Parsing feeds: 307/2187 Parsing feeds: 308/2187 Parsing feeds: 309/2187 Parsing feeds: 310/2187 Parsing feeds: 311/2187 Parsing feeds: 312/2187 Parsing feeds: 313/2187 Parsing feeds: 314/2187 Parsing feeds: 315/2187 Parsing feeds: 316/2187 Parsing feeds: 317/2187 Parsing feeds: 318/2187 Parsing feeds: 319/2187 Parsing feeds: 320/2187 Parsing feeds: 321/2187 Parsing feeds: 322/2187 Parsing feeds: 323/2187 Parsing feeds: 324/2187 Parsing feeds: 325/2187 Parsing feeds: 326/2187 Parsing feeds: 327/2187 Parsing feeds: 328/2187 Parsing feeds: 329/2187 Parsing feeds: 330/2187 Parsing feeds: 331/2187 Parsing feeds: 332/2187 Parsing feeds: 333/2187 Parsing feeds: 334/2187 Parsing feeds: 335/2187 Parsing feeds: 336/2187 Parsing feeds: 337/2187 Parsing feeds: 338/2187 Parsing feeds: 339/2187 Parsing feeds: 340/2187 Parsing feeds: 341/2187 Parsing feeds: 342/2187 Parsing feeds: 343/2187 Parsing feeds: 344/2187 Parsing feeds: 345/2187 Parsing feeds: 346/2187 Parsing feeds: 347/2187 Parsing feeds: 348/2187 Parsing feeds: 349/2187 Parsing feeds: 350/2187 Parsing feeds: 351/2187 Parsing feeds: 352/2187 Parsing feeds: 353/2187 Parsing feeds: 354/2187 Parsing feeds: 355/2187 Parsing feeds: 356/2187 Parsing feeds: 357/2187 Parsing feeds: 358/2187 Parsing feeds: 359/2187 Parsing feeds: 360/2187 Parsing feeds: 361/2187 Parsing feeds: 362/2187 Parsing feeds: 363/2187 Parsing feeds: 364/2187 Parsing feeds: 365/2187 Parsing feeds: 366/2187 Parsing feeds: 367/2187 Parsing feeds: 368/2187 Parsing feeds: 369/2187 Parsing feeds: 370/2187 Parsing feeds: 371/2187 Parsing feeds: 372/2187 Parsing feeds: 373/2187 Parsing feeds: 374/2187 Parsing feeds: 375/2187 Parsing feeds: 376/2187 Parsing feeds: 377/2187 Parsing feeds: 378/2187 Parsing feeds: 379/2187 Parsing feeds: 380/2187 Parsing feeds: 381/2187 Parsing feeds: 382/2187 Parsing feeds: 383/2187 Parsing feeds: 384/2187 Parsing feeds: 385/2187 Parsing feeds: 386/2187 Parsing feeds: 387/2187 Parsing feeds: 388/2187 Parsing feeds: 389/2187 Parsing feeds: 390/2187 Parsing feeds: 391/2187 Parsing feeds: 392/2187 Parsing feeds: 393/2187 Parsing feeds: 394/2187 Parsing feeds: 395/2187 Parsing feeds: 396/2187 Parsing feeds: 397/2187 Parsing feeds: 398/2187 Parsing feeds: 399/2187 Parsing feeds: 400/2187 Parsing feeds: 401/2187 Parsing feeds: 402/2187 Parsing feeds: 403/2187 Parsing feeds: 404/2187 Parsing feeds: 405/2187 Parsing feeds: 406/2187 Parsing feeds: 407/2187 Parsing feeds: 408/2187 Parsing feeds: 409/2187 Parsing feeds: 410/2187 Parsing feeds: 411/2187 Parsing feeds: 412/2187 Parsing feeds: 413/2187 Parsing feeds: 414/2187 Parsing feeds: 415/2187 Parsing feeds: 416/2187 Parsing feeds: 417/2187 Parsing feeds: 418/2187 Parsing feeds: 419/2187 Parsing feeds: 420/2187 Parsing feeds: 421/2187 Parsing feeds: 422/2187 Parsing feeds: 423/2187 Parsing feeds: 424/2187 Parsing feeds: 425/2187 Parsing feeds: 426/2187 Parsing feeds: 427/2187 Parsing feeds: 428/2187 Parsing feeds: 429/2187 Parsing feeds: 430/2187 Parsing feeds: 431/2187 Parsing feeds: 432/2187 Parsing feeds: 433/2187 Parsing feeds: 434/2187 Parsing feeds: 435/2187 Parsing feeds: 436/2187 Parsing feeds: 437/2187 Parsing feeds: 438/2187 Parsing feeds: 439/2187 Parsing feeds: 440/2187 Parsing feeds: 441/2187 Parsing feeds: 442/2187 Parsing feeds: 443/2187 Parsing feeds: 444/2187 Parsing feeds: 445/2187 Parsing feeds: 446/2187 Parsing feeds: 447/2187 Parsing feeds: 448/2187 Parsing feeds: 449/2187 Parsing feeds: 450/2187 Parsing feeds: 451/2187 Parsing feeds: 452/2187 Parsing feeds: 453/2187 Parsing feeds: 454/2187 Parsing feeds: 455/2187 Parsing feeds: 456/2187 Parsing feeds: 457/2187 Parsing feeds: 458/2187 Parsing feeds: 459/2187 Parsing feeds: 460/2187 Parsing feeds: 461/2187 Parsing feeds: 462/2187 Parsing feeds: 463/2187 Parsing feeds: 464/2187 Parsing feeds: 465/2187 Parsing feeds: 466/2187 Parsing feeds: 467/2187 Parsing feeds: 468/2187 Parsing feeds: 469/2187 Parsing feeds: 470/2187 Parsing feeds: 471/2187 Parsing feeds: 472/2187 Parsing feeds: 473/2187 Parsing feeds: 474/2187 Parsing feeds: 475/2187 Parsing feeds: 476/2187 Parsing feeds: 477/2187 Parsing feeds: 478/2187 Parsing feeds: 479/2187 Parsing feeds: 480/2187 Parsing feeds: 481/2187 Parsing feeds: 482/2187 Parsing feeds: 483/2187 Parsing feeds: 484/2187 Parsing feeds: 485/2187 Parsing feeds: 486/2187 Parsing feeds: 487/2187 Parsing feeds: 488/2187 Parsing feeds: 489/2187 Parsing feeds: 490/2187 Parsing feeds: 491/2187 Parsing feeds: 492/2187 Parsing feeds: 493/2187 Parsing feeds: 494/2187 Parsing feeds: 495/2187 Parsing feeds: 496/2187 Parsing feeds: 497/2187 Parsing feeds: 498/2187 Parsing feeds: 499/2187 Parsing feeds: 500/2187 Parsing feeds: 501/2187 Parsing feeds: 502/2187 Parsing feeds: 503/2187 Parsing feeds: 504/2187 Parsing feeds: 505/2187 Parsing feeds: 506/2187 Parsing feeds: 507/2187 Parsing feeds: 508/2187 Parsing feeds: 509/2187 Parsing feeds: 510/2187 Parsing feeds: 511/2187 Parsing feeds: 512/2187 Parsing feeds: 513/2187 Parsing feeds: 514/2187 Parsing feeds: 515/2187 Parsing feeds: 516/2187 Parsing feeds: 517/2187 Parsing feeds: 518/2187 Parsing feeds: 519/2187 Parsing feeds: 520/2187 Parsing feeds: 521/2187 Parsing feeds: 522/2187 Parsing feeds: 523/2187 Parsing feeds: 524/2187 Parsing feeds: 525/2187 Parsing feeds: 526/2187 Parsing feeds: 527/2187 Parsing feeds: 528/2187 Parsing feeds: 529/2187 Parsing feeds: 530/2187 Parsing feeds: 531/2187 Parsing feeds: 532/2187 Parsing feeds: 533/2187 Parsing feeds: 534/2187 Parsing feeds: 535/2187 Parsing feeds: 536/2187 Parsing feeds: 537/2187 Parsing feeds: 538/2187 Parsing feeds: 539/2187 Parsing feeds: 540/2187 Parsing feeds: 541/2187 Parsing feeds: 542/2187 Parsing feeds: 543/2187 Parsing feeds: 544/2187 Parsing feeds: 545/2187 Parsing feeds: 546/2187 Parsing feeds: 547/2187 Parsing feeds: 548/2187 Parsing feeds: 549/2187 Parsing feeds: 550/2187 Parsing feeds: 551/2187 Parsing feeds: 552/2187 Parsing feeds: 553/2187 Parsing feeds: 554/2187 Parsing feeds: 555/2187 Parsing feeds: 556/2187 Parsing feeds: 557/2187 Parsing feeds: 558/2187 Parsing feeds: 559/2187 Parsing feeds: 560/2187 Parsing feeds: 561/2187 Parsing feeds: 562/2187 Parsing feeds: 563/2187 Parsing feeds: 564/2187 Parsing feeds: 565/2187 Parsing feeds: 566/2187 Parsing feeds: 567/2187 Parsing feeds: 568/2187 Parsing feeds: 569/2187 Parsing feeds: 570/2187 Parsing feeds: 571/2187 Parsing feeds: 572/2187 Parsing feeds: 573/2187 Parsing feeds: 574/2187 Parsing feeds: 575/2187 Parsing feeds: 576/2187 Parsing feeds: 577/2187 Parsing feeds: 578/2187 Parsing feeds: 579/2187 Parsing feeds: 580/2187 Parsing feeds: 581/2187 Parsing feeds: 582/2187 Parsing feeds: 583/2187 Parsing feeds: 584/2187 Parsing feeds: 585/2187 Parsing feeds: 586/2187 Parsing feeds: 587/2187 Parsing feeds: 588/2187 Parsing feeds: 589/2187 Parsing feeds: 590/2187 Parsing feeds: 591/2187 Parsing feeds: 592/2187 Parsing feeds: 593/2187 Parsing feeds: 594/2187 Parsing feeds: 595/2187 Parsing feeds: 596/2187 Parsing feeds: 597/2187 Parsing feeds: 598/2187 Parsing feeds: 599/2187 Parsing feeds: 600/2187 Parsing feeds: 601/2187 Parsing feeds: 602/2187 Parsing feeds: 603/2187 Parsing feeds: 604/2187 Parsing feeds: 605/2187 Parsing feeds: 606/2187 Parsing feeds: 607/2187 Parsing feeds: 608/2187 Parsing feeds: 609/2187 Parsing feeds: 610/2187 Parsing feeds: 611/2187 Parsing feeds: 612/2187 Parsing feeds: 613/2187 Parsing feeds: 614/2187 Parsing feeds: 615/2187 Parsing feeds: 616/2187 Parsing feeds: 617/2187 Parsing feeds: 618/2187 Parsing feeds: 619/2187 Parsing feeds: 620/2187 Parsing feeds: 621/2187 Parsing feeds: 622/2187 Parsing feeds: 623/2187 Parsing feeds: 624/2187 Parsing feeds: 625/2187 Parsing feeds: 626/2187 Parsing feeds: 627/2187 Parsing feeds: 628/2187 Parsing feeds: 629/2187 Parsing feeds: 630/2187 Parsing feeds: 631/2187 Parsing feeds: 632/2187 Parsing feeds: 633/2187 Parsing feeds: 634/2187 Parsing feeds: 635/2187 Parsing feeds: 636/2187 Parsing feeds: 637/2187 Parsing feeds: 638/2187 Parsing feeds: 639/2187 Parsing feeds: 640/2187 Parsing feeds: 641/2187 Parsing feeds: 642/2187 Parsing feeds: 643/2187 Parsing feeds: 644/2187 Parsing feeds: 645/2187 Parsing feeds: 646/2187 Parsing feeds: 647/2187 Parsing feeds: 648/2187 Parsing feeds: 649/2187 Parsing feeds: 650/2187 Parsing feeds: 651/2187 Parsing feeds: 652/2187 Parsing feeds: 653/2187 Parsing feeds: 654/2187 Parsing feeds: 655/2187 Parsing feeds: 656/2187 Parsing feeds: 657/2187 Parsing feeds: 658/2187 Parsing feeds: 659/2187 Parsing feeds: 660/2187 Parsing feeds: 661/2187 Parsing feeds: 662/2187 Parsing feeds: 663/2187 Parsing feeds: 664/2187 Parsing feeds: 665/2187 Parsing feeds: 666/2187 Parsing feeds: 667/2187 Parsing feeds: 668/2187 Parsing feeds: 669/2187 Parsing feeds: 670/2187 Parsing feeds: 671/2187 Parsing feeds: 672/2187 Parsing feeds: 673/2187 Parsing feeds: 674/2187 Parsing feeds: 675/2187 Parsing feeds: 676/2187 Parsing feeds: 677/2187 Parsing feeds: 678/2187 Parsing feeds: 679/2187 Parsing feeds: 680/2187 Parsing feeds: 681/2187 Parsing feeds: 682/2187 Parsing feeds: 683/2187 Parsing feeds: 684/2187 Parsing feeds: 685/2187 Parsing feeds: 686/2187 Parsing feeds: 687/2187 Parsing feeds: 688/2187 Parsing feeds: 689/2187 Parsing feeds: 690/2187 Parsing feeds: 691/2187 Parsing feeds: 692/2187 Parsing feeds: 693/2187 Parsing feeds: 694/2187 Parsing feeds: 695/2187 Parsing feeds: 696/2187 Parsing feeds: 697/2187 Parsing feeds: 698/2187 Parsing feeds: 699/2187 Parsing feeds: 700/2187 Parsing feeds: 701/2187 Parsing feeds: 702/2187 Parsing feeds: 703/2187 Parsing feeds: 704/2187 Parsing feeds: 705/2187 Parsing feeds: 706/2187 Parsing feeds: 707/2187 Parsing feeds: 708/2187 Parsing feeds: 709/2187 Parsing feeds: 710/2187 Parsing feeds: 711/2187 Parsing feeds: 712/2187 Parsing feeds: 713/2187 Parsing feeds: 714/2187 Parsing feeds: 715/2187 Parsing feeds: 716/2187 Parsing feeds: 717/2187 Parsing feeds: 718/2187 Parsing feeds: 719/2187 Parsing feeds: 720/2187 Parsing feeds: 721/2187 Parsing feeds: 722/2187 Parsing feeds: 723/2187 Parsing feeds: 724/2187 Parsing feeds: 725/2187 Parsing feeds: 726/2187 Parsing feeds: 727/2187 Parsing feeds: 728/2187 Parsing feeds: 729/2187 Parsing feeds: 730/2187 Parsing feeds: 731/2187 Parsing feeds: 732/2187 Parsing feeds: 733/2187 Parsing feeds: 734/2187 Parsing feeds: 735/2187 Parsing feeds: 736/2187 Parsing feeds: 737/2187 Parsing feeds: 738/2187 Parsing feeds: 739/2187 Parsing feeds: 740/2187 Parsing feeds: 741/2187 Parsing feeds: 742/2187 Parsing feeds: 743/2187 Parsing feeds: 744/2187 Parsing feeds: 745/2187 Parsing feeds: 746/2187 Parsing feeds: 747/2187 Parsing feeds: 748/2187 Parsing feeds: 749/2187 Parsing feeds: 750/2187 Parsing feeds: 751/2187 Parsing feeds: 752/2187 Parsing feeds: 753/2187 Parsing feeds: 754/2187 Parsing feeds: 755/2187 Parsing feeds: 756/2187 Parsing feeds: 757/2187 Parsing feeds: 758/2187 Parsing feeds: 759/2187 Parsing feeds: 760/2187 Parsing feeds: 761/2187 Parsing feeds: 762/2187 Parsing feeds: 763/2187 Parsing feeds: 764/2187 Parsing feeds: 765/2187 Parsing feeds: 766/2187 Parsing feeds: 767/2187 Parsing feeds: 768/2187 Parsing feeds: 769/2187 Parsing feeds: 770/2187 Parsing feeds: 771/2187 Parsing feeds: 772/2187 Parsing feeds: 773/2187 Parsing feeds: 774/2187 Parsing feeds: 775/2187 Parsing feeds: 776/2187 Parsing feeds: 777/2187 Parsing feeds: 778/2187 Parsing feeds: 779/2187 Parsing feeds: 780/2187 Parsing feeds: 781/2187 Parsing feeds: 782/2187 Parsing feeds: 783/2187 Parsing feeds: 784/2187 Parsing feeds: 785/2187 Parsing feeds: 786/2187 Parsing feeds: 787/2187 Parsing feeds: 788/2187 Parsing feeds: 789/2187 Parsing feeds: 790/2187 Parsing feeds: 791/2187 Parsing feeds: 792/2187 Parsing feeds: 793/2187 Parsing feeds: 794/2187 Parsing feeds: 795/2187 Parsing feeds: 796/2187 Parsing feeds: 797/2187 Parsing feeds: 798/2187 Parsing feeds: 799/2187 Parsing feeds: 800/2187 Parsing feeds: 801/2187 Parsing feeds: 802/2187 Parsing feeds: 803/2187 Parsing feeds: 804/2187 Parsing feeds: 805/2187 Parsing feeds: 806/2187 Parsing feeds: 807/2187 Parsing feeds: 808/2187 Parsing feeds: 809/2187 Parsing feeds: 810/2187 Parsing feeds: 811/2187 Parsing feeds: 812/2187 Parsing feeds: 813/2187 Parsing feeds: 814/2187 Parsing feeds: 815/2187 Parsing feeds: 816/2187 Parsing feeds: 817/2187 Parsing feeds: 818/2187 Parsing feeds: 819/2187 Parsing feeds: 820/2187 Parsing feeds: 821/2187 Parsing feeds: 822/2187 Parsing feeds: 823/2187 Parsing feeds: 824/2187 Parsing feeds: 825/2187 Parsing feeds: 826/2187 Parsing feeds: 827/2187 Parsing feeds: 828/2187 Parsing feeds: 829/2187 Parsing feeds: 830/2187 Parsing feeds: 831/2187 Parsing feeds: 832/2187 Parsing feeds: 833/2187 Parsing feeds: 834/2187 Parsing feeds: 835/2187 Parsing feeds: 836/2187 Parsing feeds: 837/2187 Parsing feeds: 838/2187 Parsing feeds: 839/2187 Parsing feeds: 840/2187 Parsing feeds: 841/2187 Parsing feeds: 842/2187 Parsing feeds: 843/2187 Parsing feeds: 844/2187 Parsing feeds: 845/2187 Parsing feeds: 846/2187 Parsing feeds: 847/2187 Parsing feeds: 848/2187 Parsing feeds: 849/2187 Parsing feeds: 850/2187 Parsing feeds: 851/2187 Parsing feeds: 852/2187 Parsing feeds: 853/2187 Parsing feeds: 854/2187 Parsing feeds: 855/2187 Parsing feeds: 856/2187 Parsing feeds: 857/2187 Parsing feeds: 858/2187 Parsing feeds: 859/2187 Parsing feeds: 860/2187 Parsing feeds: 861/2187 Parsing feeds: 862/2187 Parsing feeds: 863/2187 Parsing feeds: 864/2187 Parsing feeds: 865/2187 Parsing feeds: 866/2187 Parsing feeds: 867/2187 Parsing feeds: 868/2187 Parsing feeds: 869/2187 Parsing feeds: 870/2187 Parsing feeds: 871/2187 Parsing feeds: 872/2187 Parsing feeds: 873/2187 Parsing feeds: 874/2187 Parsing feeds: 875/2187 Parsing feeds: 876/2187 Parsing feeds: 877/2187 Parsing feeds: 878/2187 Parsing feeds: 879/2187 Parsing feeds: 880/2187 Parsing feeds: 881/2187 Parsing feeds: 882/2187 Parsing feeds: 883/2187 Parsing feeds: 884/2187 Parsing feeds: 885/2187 Parsing feeds: 886/2187 Parsing feeds: 887/2187 Parsing feeds: 888/2187 Parsing feeds: 889/2187 Parsing feeds: 890/2187 Parsing feeds: 891/2187 Parsing feeds: 892/2187 Parsing feeds: 893/2187 Parsing feeds: 894/2187 Parsing feeds: 895/2187 Parsing feeds: 896/2187 Parsing feeds: 897/2187 Parsing feeds: 898/2187 Parsing feeds: 899/2187 Parsing feeds: 900/2187 Parsing feeds: 901/2187 Parsing feeds: 902/2187 Parsing feeds: 903/2187 Parsing feeds: 904/2187 Parsing feeds: 905/2187 Parsing feeds: 906/2187 Parsing feeds: 907/2187 Parsing feeds: 908/2187 Parsing feeds: 909/2187 Parsing feeds: 910/2187 Parsing feeds: 911/2187 Parsing feeds: 912/2187 Parsing feeds: 913/2187 Parsing feeds: 914/2187 Parsing feeds: 915/2187 Parsing feeds: 916/2187 Parsing feeds: 917/2187 Parsing feeds: 918/2187 Parsing feeds: 919/2187 Parsing feeds: 920/2187 Parsing feeds: 921/2187 Parsing feeds: 922/2187 Parsing feeds: 923/2187 Parsing feeds: 924/2187 Parsing feeds: 925/2187 Parsing feeds: 926/2187 Parsing feeds: 927/2187 Parsing feeds: 928/2187 Parsing feeds: 929/2187 Parsing feeds: 930/2187 Parsing feeds: 931/2187 Parsing feeds: 932/2187 Parsing feeds: 933/2187 Parsing feeds: 934/2187 Parsing feeds: 935/2187 Parsing feeds: 936/2187 Parsing feeds: 937/2187 Parsing feeds: 938/2187 Parsing feeds: 939/2187 Parsing feeds: 940/2187 Parsing feeds: 941/2187 Parsing feeds: 942/2187 Parsing feeds: 943/2187 Parsing feeds: 944/2187 Parsing feeds: 945/2187 Parsing feeds: 946/2187 Parsing feeds: 947/2187 Parsing feeds: 948/2187 Parsing feeds: 949/2187 Parsing feeds: 950/2187 Parsing feeds: 951/2187 Parsing feeds: 952/2187 Parsing feeds: 953/2187 Parsing feeds: 954/2187 Parsing feeds: 955/2187 Parsing feeds: 956/2187 Parsing feeds: 957/2187 Parsing feeds: 958/2187 Parsing feeds: 959/2187 Parsing feeds: 960/2187 Parsing feeds: 961/2187 Parsing feeds: 962/2187 Parsing feeds: 963/2187 Parsing feeds: 964/2187 Parsing feeds: 965/2187 Parsing feeds: 966/2187 Parsing feeds: 967/2187 Parsing feeds: 968/2187 Parsing feeds: 969/2187 Parsing feeds: 970/2187 Parsing feeds: 971/2187 Parsing feeds: 972/2187 Parsing feeds: 973/2187 Parsing feeds: 974/2187 Parsing feeds: 975/2187 Parsing feeds: 976/2187 Parsing feeds: 977/2187 Parsing feeds: 978/2187 Parsing feeds: 979/2187 Parsing feeds: 980/2187 Parsing feeds: 981/2187 Parsing feeds: 982/2187 Parsing feeds: 983/2187 Parsing feeds: 984/2187 Parsing feeds: 985/2187 Parsing feeds: 986/2187 Parsing feeds: 987/2187 Parsing feeds: 988/2187 Parsing feeds: 989/2187 Parsing feeds: 990/2187 Parsing feeds: 991/2187 Parsing feeds: 992/2187 Parsing feeds: 993/2187 Parsing feeds: 994/2187 Parsing feeds: 995/2187 Parsing feeds: 996/2187 Parsing feeds: 997/2187 Parsing feeds: 998/2187 Parsing feeds: 999/2187 Parsing feeds: 1000/2187 Parsing feeds: 1001/2187 Parsing feeds: 1002/2187 Parsing feeds: 1003/2187 Parsing feeds: 1004/2187 Parsing feeds: 1005/2187 Parsing feeds: 1006/2187 Parsing feeds: 1007/2187 Parsing feeds: 1008/2187 Parsing feeds: 1009/2187 Parsing feeds: 1010/2187 Parsing feeds: 1011/2187 Parsing feeds: 1012/2187 Parsing feeds: 1013/2187 Parsing feeds: 1014/2187 Parsing feeds: 1015/2187 Parsing feeds: 1016/2187 Parsing feeds: 1017/2187 Parsing feeds: 1018/2187 Parsing feeds: 1019/2187 Parsing feeds: 1020/2187 Parsing feeds: 1021/2187 Parsing feeds: 1022/2187 Parsing feeds: 1023/2187 Parsing feeds: 1024/2187 Parsing feeds: 1025/2187 Parsing feeds: 1026/2187 Parsing feeds: 1027/2187 Parsing feeds: 1028/2187 Parsing feeds: 1029/2187 Parsing feeds: 1030/2187 Parsing feeds: 1031/2187 Parsing feeds: 1032/2187 Parsing feeds: 1033/2187 Parsing feeds: 1034/2187 Parsing feeds: 1035/2187 Parsing feeds: 1036/2187 Parsing feeds: 1037/2187 Parsing feeds: 1038/2187 Parsing feeds: 1039/2187 Parsing feeds: 1040/2187 Parsing feeds: 1041/2187 Parsing feeds: 1042/2187 Parsing feeds: 1043/2187 Parsing feeds: 1044/2187 Parsing feeds: 1045/2187 Parsing feeds: 1046/2187 Parsing feeds: 1047/2187 Parsing feeds: 1048/2187 Parsing feeds: 1049/2187 Parsing feeds: 1050/2187 Parsing feeds: 1051/2187 Parsing feeds: 1052/2187 Parsing feeds: 1053/2187 Parsing feeds: 1054/2187 Parsing feeds: 1055/2187 Parsing feeds: 1056/2187 Parsing feeds: 1057/2187 Parsing feeds: 1058/2187 Parsing feeds: 1059/2187 Parsing feeds: 1060/2187 Parsing feeds: 1061/2187 Parsing feeds: 1062/2187 Parsing feeds: 1063/2187 Parsing feeds: 1064/2187 Parsing feeds: 1065/2187 Parsing feeds: 1066/2187 Parsing feeds: 1067/2187 Parsing feeds: 1068/2187 Parsing feeds: 1069/2187 Parsing feeds: 1070/2187 Parsing feeds: 1071/2187 Parsing feeds: 1072/2187 Parsing feeds: 1073/2187 Parsing feeds: 1074/2187 Parsing feeds: 1075/2187 Parsing feeds: 1076/2187 Parsing feeds: 1077/2187 Parsing feeds: 1078/2187 Parsing feeds: 1079/2187 Parsing feeds: 1080/2187 Parsing feeds: 1081/2187 Parsing feeds: 1082/2187 Parsing feeds: 1083/2187 Parsing feeds: 1084/2187 Parsing feeds: 1085/2187 Parsing feeds: 1086/2187 Parsing feeds: 1087/2187 Parsing feeds: 1088/2187 Parsing feeds: 1089/2187 Parsing feeds: 1090/2187 Parsing feeds: 1091/2187 Parsing feeds: 1092/2187 Parsing feeds: 1093/2187 Parsing feeds: 1094/2187 Parsing feeds: 1095/2187 Parsing feeds: 1096/2187 Parsing feeds: 1097/2187 Parsing feeds: 1098/2187 Parsing feeds: 1099/2187 Parsing feeds: 1100/2187 Parsing feeds: 1101/2187 Parsing feeds: 1102/2187 Parsing feeds: 1103/2187 Parsing feeds: 1104/2187 Parsing feeds: 1105/2187 Parsing feeds: 1106/2187 Parsing feeds: 1107/2187 Parsing feeds: 1108/2187 Parsing feeds: 1109/2187 Parsing feeds: 1110/2187 Parsing feeds: 1111/2187 Parsing feeds: 1112/2187 Parsing feeds: 1113/2187 Parsing feeds: 1114/2187 Parsing feeds: 1115/2187 Parsing feeds: 1116/2187 Parsing feeds: 1117/2187 Parsing feeds: 1118/2187 Parsing feeds: 1119/2187 Parsing feeds: 1120/2187 Parsing feeds: 1121/2187 Parsing feeds: 1122/2187 Parsing feeds: 1123/2187 Parsing feeds: 1124/2187 Parsing feeds: 1125/2187 Parsing feeds: 1126/2187 Parsing feeds: 1127/2187 Parsing feeds: 1128/2187 Parsing feeds: 1129/2187 Parsing feeds: 1130/2187 Parsing feeds: 1131/2187 Parsing feeds: 1132/2187 Parsing feeds: 1133/2187 Parsing feeds: 1134/2187 Parsing feeds: 1135/2187 Parsing feeds: 1136/2187 Parsing feeds: 1137/2187 Parsing feeds: 1138/2187 Parsing feeds: 1139/2187 Parsing feeds: 1140/2187 Parsing feeds: 1141/2187 Parsing feeds: 1142/2187 Parsing feeds: 1143/2187 Parsing feeds: 1144/2187 Parsing feeds: 1145/2187 Parsing feeds: 1146/2187 Parsing feeds: 1147/2187 Parsing feeds: 1148/2187 Parsing feeds: 1149/2187 Parsing feeds: 1150/2187 Parsing feeds: 1151/2187 Parsing feeds: 1152/2187 Parsing feeds: 1153/2187 Parsing feeds: 1154/2187 Parsing feeds: 1155/2187 Parsing feeds: 1156/2187 Parsing feeds: 1157/2187 Parsing feeds: 1158/2187 Parsing feeds: 1159/2187 Parsing feeds: 1160/2187 Parsing feeds: 1161/2187 Parsing feeds: 1162/2187 Parsing feeds: 1163/2187 Parsing feeds: 1164/2187 Parsing feeds: 1165/2187 Parsing feeds: 1166/2187 Parsing feeds: 1167/2187 Parsing feeds: 1168/2187 Parsing feeds: 1169/2187 Parsing feeds: 1170/2187 Parsing feeds: 1171/2187 Parsing feeds: 1172/2187 Parsing feeds: 1173/2187 Parsing feeds: 1174/2187 Parsing feeds: 1175/2187 Parsing feeds: 1176/2187 Parsing feeds: 1177/2187 Parsing feeds: 1178/2187 Parsing feeds: 1179/2187 Parsing feeds: 1180/2187 Parsing feeds: 1181/2187 Parsing feeds: 1182/2187 Parsing feeds: 1183/2187 Parsing feeds: 1184/2187 Parsing feeds: 1185/2187 Parsing feeds: 1186/2187 Parsing feeds: 1187/2187 Parsing feeds: 1188/2187 Parsing feeds: 1189/2187 Parsing feeds: 1190/2187 Parsing feeds: 1191/2187 Parsing feeds: 1192/2187 Parsing feeds: 1193/2187 Parsing feeds: 1194/2187 Parsing feeds: 1195/2187 Parsing feeds: 1196/2187 Parsing feeds: 1197/2187 Parsing feeds: 1198/2187 Parsing feeds: 1199/2187 Parsing feeds: 1200/2187 Parsing feeds: 1201/2187 Parsing feeds: 1202/2187 Parsing feeds: 1203/2187 Parsing feeds: 1204/2187 Parsing feeds: 1205/2187 Parsing feeds: 1206/2187 Parsing feeds: 1207/2187 Parsing feeds: 1208/2187 Parsing feeds: 1209/2187 Parsing feeds: 1210/2187 Parsing feeds: 1211/2187 Parsing feeds: 1212/2187 Parsing feeds: 1213/2187 Parsing feeds: 1214/2187 Parsing feeds: 1215/2187 Parsing feeds: 1216/2187 Parsing feeds: 1217/2187 Parsing feeds: 1218/2187 Parsing feeds: 1219/2187 Parsing feeds: 1220/2187 Parsing feeds: 1221/2187 Parsing feeds: 1222/2187 Parsing feeds: 1223/2187 Parsing feeds: 1224/2187 Parsing feeds: 1225/2187 Parsing feeds: 1226/2187 Parsing feeds: 1227/2187 Parsing feeds: 1228/2187 Parsing feeds: 1229/2187 Parsing feeds: 1230/2187 Parsing feeds: 1231/2187 Parsing feeds: 1232/2187 Parsing feeds: 1233/2187 Parsing feeds: 1234/2187 Parsing feeds: 1235/2187 Parsing feeds: 1236/2187 Parsing feeds: 1237/2187 Parsing feeds: 1238/2187 Parsing feeds: 1239/2187 Parsing feeds: 1240/2187 Parsing feeds: 1241/2187 Parsing feeds: 1242/2187 Parsing feeds: 1243/2187 Parsing feeds: 1244/2187 Parsing feeds: 1245/2187 Parsing feeds: 1246/2187 Parsing feeds: 1247/2187 Parsing feeds: 1248/2187 Parsing feeds: 1249/2187 Parsing feeds: 1250/2187 Parsing feeds: 1251/2187 Parsing feeds: 1252/2187 Parsing feeds: 1253/2187 Parsing feeds: 1254/2187 Parsing feeds: 1255/2187 Parsing feeds: 1256/2187 Parsing feeds: 1257/2187 Parsing feeds: 1258/2187 Parsing feeds: 1259/2187 Parsing feeds: 1260/2187 Parsing feeds: 1261/2187 Parsing feeds: 1262/2187 Parsing feeds: 1263/2187 Parsing feeds: 1264/2187 Parsing feeds: 1265/2187 Parsing feeds: 1266/2187 Parsing feeds: 1267/2187 Parsing feeds: 1268/2187 Parsing feeds: 1269/2187 Parsing feeds: 1270/2187 Parsing feeds: 1271/2187 Parsing feeds: 1272/2187 Parsing feeds: 1273/2187 Parsing feeds: 1274/2187 Parsing feeds: 1275/2187 Parsing feeds: 1276/2187 Parsing feeds: 1277/2187 Parsing feeds: 1278/2187 Parsing feeds: 1279/2187 Parsing feeds: 1280/2187 Parsing feeds: 1281/2187 Parsing feeds: 1282/2187 Parsing feeds: 1283/2187 Parsing feeds: 1284/2187 Parsing feeds: 1285/2187 Parsing feeds: 1286/2187 Parsing feeds: 1287/2187 Parsing feeds: 1288/2187 Parsing feeds: 1289/2187 Parsing feeds: 1290/2187 Parsing feeds: 1291/2187 Parsing feeds: 1292/2187 Parsing feeds: 1293/2187 Parsing feeds: 1294/2187 Parsing feeds: 1295/2187 Parsing feeds: 1296/2187 Parsing feeds: 1297/2187 Parsing feeds: 1298/2187 Parsing feeds: 1299/2187 Parsing feeds: 1300/2187 Parsing feeds: 1301/2187 Parsing feeds: 1302/2187 Parsing feeds: 1303/2187 Parsing feeds: 1304/2187 Parsing feeds: 1305/2187 Parsing feeds: 1306/2187 Parsing feeds: 1307/2187 Parsing feeds: 1308/2187 Parsing feeds: 1309/2187 Parsing feeds: 1310/2187 Parsing feeds: 1311/2187 Parsing feeds: 1312/2187 Parsing feeds: 1313/2187 Parsing feeds: 1314/2187 Parsing feeds: 1315/2187 Parsing feeds: 1316/2187 Parsing feeds: 1317/2187 Parsing feeds: 1318/2187 Parsing feeds: 1319/2187 Parsing feeds: 1320/2187 Parsing feeds: 1321/2187 Parsing feeds: 1322/2187 Parsing feeds: 1323/2187 Parsing feeds: 1324/2187 Parsing feeds: 1325/2187 Parsing feeds: 1326/2187 Parsing feeds: 1327/2187 Parsing feeds: 1328/2187 Parsing feeds: 1329/2187 Parsing feeds: 1330/2187 Parsing feeds: 1331/2187 Parsing feeds: 1332/2187 Parsing feeds: 1333/2187 Parsing feeds: 1334/2187 Parsing feeds: 1335/2187 Parsing feeds: 1336/2187 Parsing feeds: 1337/2187 Parsing feeds: 1338/2187 Parsing feeds: 1339/2187 Parsing feeds: 1340/2187 Parsing feeds: 1341/2187 Parsing feeds: 1342/2187 Parsing feeds: 1343/2187 Parsing feeds: 1344/2187 Parsing feeds: 1345/2187 Parsing feeds: 1346/2187 Parsing feeds: 1347/2187 Parsing feeds: 1348/2187 Parsing feeds: 1349/2187 Parsing feeds: 1350/2187 Parsing feeds: 1351/2187 Parsing feeds: 1352/2187 Parsing feeds: 1353/2187 Parsing feeds: 1354/2187 Parsing feeds: 1355/2187 Parsing feeds: 1356/2187 Parsing feeds: 1357/2187 Parsing feeds: 1358/2187 Parsing feeds: 1359/2187 Parsing feeds: 1360/2187 Parsing feeds: 1361/2187 Parsing feeds: 1362/2187 Parsing feeds: 1363/2187 Parsing feeds: 1364/2187 Parsing feeds: 1365/2187 Parsing feeds: 1366/2187 Parsing feeds: 1367/2187 Parsing feeds: 1368/2187 Parsing feeds: 1369/2187 Parsing feeds: 1370/2187 Parsing feeds: 1371/2187 Parsing feeds: 1372/2187 Parsing feeds: 1373/2187 Parsing feeds: 1374/2187 Parsing feeds: 1375/2187 Parsing feeds: 1376/2187 Parsing feeds: 1377/2187 Parsing feeds: 1378/2187 Parsing feeds: 1379/2187 Parsing feeds: 1380/2187 Parsing feeds: 1381/2187 Parsing feeds: 1382/2187 Parsing feeds: 1383/2187 Parsing feeds: 1384/2187 Parsing feeds: 1385/2187 Parsing feeds: 1386/2187 Parsing feeds: 1387/2187 Parsing feeds: 1388/2187 Parsing feeds: 1389/2187 Parsing feeds: 1390/2187 Parsing feeds: 1391/2187 Parsing feeds: 1392/2187 Parsing feeds: 1393/2187 Parsing feeds: 1394/2187 Parsing feeds: 1395/2187 Parsing feeds: 1396/2187 Parsing feeds: 1397/2187 Parsing feeds: 1398/2187 Parsing feeds: 1399/2187 Parsing feeds: 1400/2187 Parsing feeds: 1401/2187 Parsing feeds: 1402/2187 Parsing feeds: 1403/2187 Parsing feeds: 1404/2187 Parsing feeds: 1405/2187 Parsing feeds: 1406/2187 Parsing feeds: 1407/2187 Parsing feeds: 1408/2187 Parsing feeds: 1409/2187 Parsing feeds: 1410/2187 Parsing feeds: 1411/2187 Parsing feeds: 1412/2187 Parsing feeds: 1413/2187 Parsing feeds: 1414/2187 Parsing feeds: 1415/2187 Parsing feeds: 1416/2187 Parsing feeds: 1417/2187 Parsing feeds: 1418/2187 Parsing feeds: 1419/2187 Parsing feeds: 1420/2187 Parsing feeds: 1421/2187 Parsing feeds: 1422/2187 Parsing feeds: 1423/2187 Parsing feeds: 1424/2187 Parsing feeds: 1425/2187 Parsing feeds: 1426/2187 Parsing feeds: 1427/2187 Parsing feeds: 1428/2187 Parsing feeds: 1429/2187 Parsing feeds: 1430/2187 Parsing feeds: 1431/2187 Parsing feeds: 1432/2187 Parsing feeds: 1433/2187 Parsing feeds: 1434/2187 Parsing feeds: 1435/2187 Parsing feeds: 1436/2187 Parsing feeds: 1437/2187 Parsing feeds: 1438/2187 Parsing feeds: 1439/2187 Parsing feeds: 1440/2187 Parsing feeds: 1441/2187 Parsing feeds: 1442/2187 Parsing feeds: 1443/2187 Parsing feeds: 1444/2187 Parsing feeds: 1445/2187 Parsing feeds: 1446/2187 Parsing feeds: 1447/2187 Parsing feeds: 1448/2187 Parsing feeds: 1449/2187 Parsing feeds: 1450/2187 Parsing feeds: 1451/2187 Parsing feeds: 1452/2187 Parsing feeds: 1453/2187 Parsing feeds: 1454/2187 Parsing feeds: 1455/2187 Parsing feeds: 1456/2187 Parsing feeds: 1457/2187 Parsing feeds: 1458/2187 Parsing feeds: 1459/2187 Parsing feeds: 1460/2187 Parsing feeds: 1461/2187 Parsing feeds: 1462/2187 Parsing feeds: 1463/2187 Parsing feeds: 1464/2187 Parsing feeds: 1465/2187 Parsing feeds: 1466/2187 Parsing feeds: 1467/2187 Parsing feeds: 1468/2187 Parsing feeds: 1469/2187 Parsing feeds: 1470/2187 Parsing feeds: 1471/2187 Parsing feeds: 1472/2187 Parsing feeds: 1473/2187 Parsing feeds: 1474/2187 Parsing feeds: 1475/2187 Parsing feeds: 1476/2187 Parsing feeds: 1477/2187 Parsing feeds: 1478/2187 Parsing feeds: 1479/2187 Parsing feeds: 1480/2187 Parsing feeds: 1481/2187 Parsing feeds: 1482/2187 Parsing feeds: 1483/2187 Parsing feeds: 1484/2187 Parsing feeds: 1485/2187 Parsing feeds: 1486/2187 Parsing feeds: 1487/2187 Parsing feeds: 1488/2187 Parsing feeds: 1489/2187 Parsing feeds: 1490/2187 Parsing feeds: 1491/2187 Parsing feeds: 1492/2187 Parsing feeds: 1493/2187 Parsing feeds: 1494/2187 Parsing feeds: 1495/2187 Parsing feeds: 1496/2187 Parsing feeds: 1497/2187 Parsing feeds: 1498/2187 Parsing feeds: 1499/2187 Parsing feeds: 1500/2187 Parsing feeds: 1501/2187 Parsing feeds: 1502/2187 Parsing feeds: 1503/2187 Parsing feeds: 1504/2187 Parsing feeds: 1505/2187 Parsing feeds: 1506/2187 Parsing feeds: 1507/2187 Parsing feeds: 1508/2187 Parsing feeds: 1509/2187 Parsing feeds: 1510/2187 Parsing feeds: 1511/2187 Parsing feeds: 1512/2187 Parsing feeds: 1513/2187 Parsing feeds: 1514/2187 Parsing feeds: 1515/2187 Parsing feeds: 1516/2187 Parsing feeds: 1517/2187 Parsing feeds: 1518/2187 Parsing feeds: 1519/2187 Parsing feeds: 1520/2187 Parsing feeds: 1521/2187 Parsing feeds: 1522/2187 Parsing feeds: 1523/2187 Parsing feeds: 1524/2187 Parsing feeds: 1525/2187 Parsing feeds: 1526/2187 Parsing feeds: 1527/2187 Parsing feeds: 1528/2187 Parsing feeds: 1529/2187 Parsing feeds: 1530/2187 Parsing feeds: 1531/2187 Parsing feeds: 1532/2187 Parsing feeds: 1533/2187 Parsing feeds: 1534/2187 Parsing feeds: 1535/2187 Parsing feeds: 1536/2187 Parsing feeds: 1537/2187 Parsing feeds: 1538/2187 Parsing feeds: 1539/2187 Parsing feeds: 1540/2187 Parsing feeds: 1541/2187 Parsing feeds: 1542/2187 Parsing feeds: 1543/2187 Parsing feeds: 1544/2187 Parsing feeds: 1545/2187 Parsing feeds: 1546/2187 Parsing feeds: 1547/2187 Parsing feeds: 1548/2187 Parsing feeds: 1549/2187 Parsing feeds: 1550/2187 Parsing feeds: 1551/2187 Parsing feeds: 1552/2187 Parsing feeds: 1553/2187 Parsing feeds: 1554/2187 Parsing feeds: 1555/2187 Parsing feeds: 1556/2187 Parsing feeds: 1557/2187 Parsing feeds: 1558/2187 Parsing feeds: 1559/2187 Parsing feeds: 1560/2187 Parsing feeds: 1561/2187 Parsing feeds: 1562/2187 Parsing feeds: 1563/2187 Parsing feeds: 1564/2187 Parsing feeds: 1565/2187 Parsing feeds: 1566/2187 Parsing feeds: 1567/2187 Parsing feeds: 1568/2187 Parsing feeds: 1569/2187 Parsing feeds: 1570/2187 Parsing feeds: 1571/2187 Parsing feeds: 1572/2187 Parsing feeds: 1573/2187 Parsing feeds: 1574/2187 Parsing feeds: 1575/2187 Parsing feeds: 1576/2187 Parsing feeds: 1577/2187 Parsing feeds: 1578/2187 Parsing feeds: 1579/2187 Parsing feeds: 1580/2187 Parsing feeds: 1581/2187 Parsing feeds: 1582/2187 Parsing feeds: 1583/2187 Parsing feeds: 1584/2187 Parsing feeds: 1585/2187 Parsing feeds: 1586/2187 Parsing feeds: 1587/2187 Parsing feeds: 1588/2187 Parsing feeds: 1589/2187 Parsing feeds: 1590/2187 Parsing feeds: 1591/2187 Parsing feeds: 1592/2187 Parsing feeds: 1593/2187 Parsing feeds: 1594/2187 Parsing feeds: 1595/2187 Parsing feeds: 1596/2187 Parsing feeds: 1597/2187 Parsing feeds: 1598/2187 Parsing feeds: 1599/2187 Parsing feeds: 1600/2187 Parsing feeds: 1601/2187 Parsing feeds: 1602/2187 Parsing feeds: 1603/2187 Parsing feeds: 1604/2187 Parsing feeds: 1605/2187 Parsing feeds: 1606/2187 Parsing feeds: 1607/2187 Parsing feeds: 1608/2187 Parsing feeds: 1609/2187 Parsing feeds: 1610/2187 Parsing feeds: 1611/2187 Parsing feeds: 1612/2187 Parsing feeds: 1613/2187 Parsing feeds: 1614/2187 Parsing feeds: 1615/2187 Parsing feeds: 1616/2187 Parsing feeds: 1617/2187 Parsing feeds: 1618/2187 Parsing feeds: 1619/2187 Parsing feeds: 1620/2187 Parsing feeds: 1621/2187 Parsing feeds: 1622/2187 Parsing feeds: 1623/2187 Parsing feeds: 1624/2187 Parsing feeds: 1625/2187 Parsing feeds: 1626/2187 Parsing feeds: 1627/2187 Parsing feeds: 1628/2187 Parsing feeds: 1629/2187 Parsing feeds: 1630/2187 Parsing feeds: 1631/2187 Parsing feeds: 1632/2187 Parsing feeds: 1633/2187 Parsing feeds: 1634/2187 Parsing feeds: 1635/2187 Parsing feeds: 1636/2187 Parsing feeds: 1637/2187 Parsing feeds: 1638/2187 Parsing feeds: 1639/2187 Parsing feeds: 1640/2187 Parsing feeds: 1641/2187 Parsing feeds: 1642/2187 Parsing feeds: 1643/2187 Parsing feeds: 1644/2187 Parsing feeds: 1645/2187 Parsing feeds: 1646/2187 Parsing feeds: 1647/2187 Parsing feeds: 1648/2187 Parsing feeds: 1649/2187 Parsing feeds: 1650/2187 Parsing feeds: 1651/2187 Parsing feeds: 1652/2187 Parsing feeds: 1653/2187 Parsing feeds: 1654/2187 Parsing feeds: 1655/2187 Parsing feeds: 1656/2187 Parsing feeds: 1657/2187 Parsing feeds: 1658/2187 Parsing feeds: 1659/2187 Parsing feeds: 1660/2187 Parsing feeds: 1661/2187 Parsing feeds: 1662/2187 Parsing feeds: 1663/2187 Parsing feeds: 1664/2187 Parsing feeds: 1665/2187 Parsing feeds: 1666/2187 Parsing feeds: 1667/2187 Parsing feeds: 1668/2187 Parsing feeds: 1669/2187 Parsing feeds: 1670/2187 Parsing feeds: 1671/2187 Parsing feeds: 1672/2187 Parsing feeds: 1673/2187 Parsing feeds: 1674/2187 Parsing feeds: 1675/2187 Parsing feeds: 1676/2187 Parsing feeds: 1677/2187 Parsing feeds: 1678/2187 Parsing feeds: 1679/2187 Parsing feeds: 1680/2187 Parsing feeds: 1681/2187 Parsing feeds: 1682/2187 Parsing feeds: 1683/2187 Parsing feeds: 1684/2187 Parsing feeds: 1685/2187 Parsing feeds: 1686/2187 Parsing feeds: 1687/2187 Parsing feeds: 1688/2187 Parsing feeds: 1689/2187 Parsing feeds: 1690/2187 Parsing feeds: 1691/2187 Parsing feeds: 1692/2187 Parsing feeds: 1693/2187 Parsing feeds: 1694/2187 Parsing feeds: 1695/2187 Parsing feeds: 1696/2187 Parsing feeds: 1697/2187 Parsing feeds: 1698/2187 Parsing feeds: 1699/2187 Parsing feeds: 1700/2187 Parsing feeds: 1701/2187 Parsing feeds: 1702/2187 Parsing feeds: 1703/2187 Parsing feeds: 1704/2187 Parsing feeds: 1705/2187 Parsing feeds: 1706/2187 Parsing feeds: 1707/2187 Parsing feeds: 1708/2187 Parsing feeds: 1709/2187 Parsing feeds: 1710/2187 Parsing feeds: 1711/2187 Parsing feeds: 1712/2187 Parsing feeds: 1713/2187 Parsing feeds: 1714/2187 Parsing feeds: 1715/2187 Parsing feeds: 1716/2187 Parsing feeds: 1717/2187 Parsing feeds: 1718/2187 Parsing feeds: 1719/2187 Parsing feeds: 1720/2187 Parsing feeds: 1721/2187 Parsing feeds: 1722/2187 Parsing feeds: 1723/2187 Parsing feeds: 1724/2187 Parsing feeds: 1725/2187 Parsing feeds: 1726/2187 Parsing feeds: 1727/2187 Parsing feeds: 1728/2187 Parsing feeds: 1729/2187 Parsing feeds: 1730/2187 Parsing feeds: 1731/2187 Parsing feeds: 1732/2187 Parsing feeds: 1733/2187 Parsing feeds: 1734/2187 Parsing feeds: 1735/2187 Parsing feeds: 1736/2187 Parsing feeds: 1737/2187 Parsing feeds: 1738/2187 Parsing feeds: 1739/2187 Parsing feeds: 1740/2187 Parsing feeds: 1741/2187 Parsing feeds: 1742/2187 Parsing feeds: 1743/2187 Parsing feeds: 1744/2187 Parsing feeds: 1745/2187 Parsing feeds: 1746/2187 Parsing feeds: 1747/2187 Parsing feeds: 1748/2187 Parsing feeds: 1749/2187 Parsing feeds: 1750/2187 Parsing feeds: 1751/2187 Parsing feeds: 1752/2187 Parsing feeds: 1753/2187 Parsing feeds: 1754/2187 Parsing feeds: 1755/2187 Parsing feeds: 1756/2187 Parsing feeds: 1757/2187 Parsing feeds: 1758/2187 Parsing feeds: 1759/2187 Parsing feeds: 1760/2187 Parsing feeds: 1761/2187 Parsing feeds: 1762/2187 Parsing feeds: 1763/2187 Parsing feeds: 1764/2187 Parsing feeds: 1765/2187 Parsing feeds: 1766/2187 Parsing feeds: 1767/2187 Parsing feeds: 1768/2187 Parsing feeds: 1769/2187 Parsing feeds: 1770/2187 Parsing feeds: 1771/2187 Parsing feeds: 1772/2187 Parsing feeds: 1773/2187 Parsing feeds: 1774/2187 Parsing feeds: 1775/2187 Parsing feeds: 1776/2187 Parsing feeds: 1777/2187 Parsing feeds: 1778/2187 Parsing feeds: 1779/2187 Parsing feeds: 1780/2187 Parsing feeds: 1781/2187 Parsing feeds: 1782/2187 Parsing feeds: 1783/2187 Parsing feeds: 1784/2187 Parsing feeds: 1785/2187 Parsing feeds: 1786/2187 Parsing feeds: 1787/2187 Parsing feeds: 1788/2187 Parsing feeds: 1789/2187 Parsing feeds: 1790/2187 Parsing feeds: 1791/2187 Parsing feeds: 1792/2187 Parsing feeds: 1793/2187 Parsing feeds: 1794/2187 Parsing feeds: 1795/2187 Parsing feeds: 1796/2187 Parsing feeds: 1797/2187 Parsing feeds: 1798/2187 Parsing feeds: 1799/2187 Parsing feeds: 1800/2187 Parsing feeds: 1801/2187 Parsing feeds: 1802/2187 Parsing feeds: 1803/2187 Parsing feeds: 1804/2187 Parsing feeds: 1805/2187 Parsing feeds: 1806/2187 Parsing feeds: 1807/2187 Parsing feeds: 1808/2187 Parsing feeds: 1809/2187 Parsing feeds: 1810/2187 Parsing feeds: 1811/2187 Parsing feeds: 1812/2187 Parsing feeds: 1813/2187 Parsing feeds: 1814/2187 Parsing feeds: 1815/2187 Parsing feeds: 1816/2187 Parsing feeds: 1817/2187 Parsing feeds: 1818/2187 Parsing feeds: 1819/2187 Parsing feeds: 1820/2187 Parsing feeds: 1821/2187 Parsing feeds: 1822/2187 Parsing feeds: 1823/2187 Parsing feeds: 1824/2187 Parsing feeds: 1825/2187 Parsing feeds: 1826/2187 Parsing feeds: 1827/2187 Parsing feeds: 1828/2187 Parsing feeds: 1829/2187 Parsing feeds: 1830/2187 Parsing feeds: 1831/2187 Parsing feeds: 1832/2187 Parsing feeds: 1833/2187 Parsing feeds: 1834/2187 Parsing feeds: 1835/2187 Parsing feeds: 1836/2187 Parsing feeds: 1837/2187 Parsing feeds: 1838/2187 Parsing feeds: 1839/2187 Parsing feeds: 1840/2187 Parsing feeds: 1841/2187 Parsing feeds: 1842/2187 Parsing feeds: 1843/2187 Parsing feeds: 1844/2187 Parsing feeds: 1845/2187 Parsing feeds: 1846/2187 Parsing feeds: 1847/2187 Parsing feeds: 1848/2187 Parsing feeds: 1849/2187 Parsing feeds: 1850/2187 Parsing feeds: 1851/2187 Parsing feeds: 1852/2187 Parsing feeds: 1853/2187 Parsing feeds: 1854/2187 Parsing feeds: 1855/2187 Parsing feeds: 1856/2187 Parsing feeds: 1857/2187 Parsing feeds: 1858/2187 Parsing feeds: 1859/2187 Parsing feeds: 1860/2187 Parsing feeds: 1861/2187 Parsing feeds: 1862/2187 Parsing feeds: 1863/2187 Parsing feeds: 1864/2187 Parsing feeds: 1865/2187 Parsing feeds: 1866/2187 Parsing feeds: 1867/2187 Parsing feeds: 1868/2187 Parsing feeds: 1869/2187 Parsing feeds: 1870/2187 Parsing feeds: 1871/2187 Parsing feeds: 1872/2187 Parsing feeds: 1873/2187 Parsing feeds: 1874/2187 Parsing feeds: 1875/2187 Parsing feeds: 1876/2187 Parsing feeds: 1877/2187 Parsing feeds: 1878/2187 Parsing feeds: 1879/2187 Parsing feeds: 1880/2187 Parsing feeds: 1881/2187 Parsing feeds: 1882/2187 Parsing feeds: 1883/2187 Parsing feeds: 1884/2187 Parsing feeds: 1885/2187 Parsing feeds: 1886/2187 Parsing feeds: 1887/2187 Parsing feeds: 1888/2187 Parsing feeds: 1889/2187 Parsing feeds: 1890/2187 Parsing feeds: 1891/2187 Parsing feeds: 1892/2187 Parsing feeds: 1893/2187 Parsing feeds: 1894/2187 Parsing feeds: 1895/2187 Parsing feeds: 1896/2187 Parsing feeds: 1897/2187 Parsing feeds: 1898/2187 Parsing feeds: 1899/2187 Parsing feeds: 1900/2187 Parsing feeds: 1901/2187 Parsing feeds: 1902/2187 Parsing feeds: 1903/2187 Parsing feeds: 1904/2187 Parsing feeds: 1905/2187 Parsing feeds: 1906/2187 Parsing feeds: 1907/2187 Parsing feeds: 1908/2187 Parsing feeds: 1909/2187 Parsing feeds: 1910/2187 Parsing feeds: 1911/2187 Parsing feeds: 1912/2187 Parsing feeds: 1913/2187 Parsing feeds: 1914/2187 Parsing feeds: 1915/2187 Parsing feeds: 1916/2187 Parsing feeds: 1917/2187 Parsing feeds: 1918/2187 Parsing feeds: 1919/2187 Parsing feeds: 1920/2187 Parsing feeds: 1921/2187 Parsing feeds: 1922/2187 Parsing feeds: 1923/2187 Parsing feeds: 1924/2187 Parsing feeds: 1925/2187 Parsing feeds: 1926/2187 Parsing feeds: 1927/2187 Parsing feeds: 1928/2187 Parsing feeds: 1929/2187 Parsing feeds: 1930/2187 Parsing feeds: 1931/2187 Parsing feeds: 1932/2187 Parsing feeds: 1933/2187 Parsing feeds: 1934/2187 Parsing feeds: 1935/2187 Parsing feeds: 1936/2187 Parsing feeds: 1937/2187 Parsing feeds: 1938/2187 Parsing feeds: 1939/2187 Parsing feeds: 1940/2187 Parsing feeds: 1941/2187 Parsing feeds: 1942/2187 Parsing feeds: 1943/2187 Parsing feeds: 1944/2187 Parsing feeds: 1945/2187 Parsing feeds: 1946/2187 Parsing feeds: 1947/2187 Parsing feeds: 1948/2187 Parsing feeds: 1949/2187 Parsing feeds: 1950/2187 Parsing feeds: 1951/2187 Parsing feeds: 1952/2187 Parsing feeds: 1953/2187 Parsing feeds: 1954/2187 Parsing feeds: 1955/2187 Parsing feeds: 1956/2187 Parsing feeds: 1957/2187 Parsing feeds: 1958/2187 Parsing feeds: 1959/2187 Parsing feeds: 1960/2187 Parsing feeds: 1961/2187 Parsing feeds: 1962/2187 Parsing feeds: 1963/2187 Parsing feeds: 1964/2187 Parsing feeds: 1965/2187 Parsing feeds: 1966/2187 Parsing feeds: 1967/2187 Parsing feeds: 1968/2187 Parsing feeds: 1969/2187 Parsing feeds: 1970/2187 Parsing feeds: 1971/2187 Parsing feeds: 1972/2187 Parsing feeds: 1973/2187 Parsing feeds: 1974/2187 Parsing feeds: 1975/2187 Parsing feeds: 1976/2187 Parsing feeds: 1977/2187 Parsing feeds: 1978/2187 Parsing feeds: 1979/2187 Parsing feeds: 1980/2187 Parsing feeds: 1981/2187 Parsing feeds: 1982/2187 Parsing feeds: 1983/2187 Parsing feeds: 1984/2187 Parsing feeds: 1985/2187 Parsing feeds: 1986/2187 Parsing feeds: 1987/2187 Parsing feeds: 1988/2187 Parsing feeds: 1989/2187 Parsing feeds: 1990/2187 Parsing feeds: 1991/2187 Parsing feeds: 1992/2187 Parsing feeds: 1993/2187 Parsing feeds: 1994/2187 Parsing feeds: 1995/2187 Parsing feeds: 1996/2187 Parsing feeds: 1997/2187 Parsing feeds: 1998/2187 Parsing feeds: 1999/2187 Parsing feeds: 2000/2187 Parsing feeds: 2001/2187 Parsing feeds: 2002/2187 Parsing feeds: 2003/2187 Parsing feeds: 2004/2187 Parsing feeds: 2005/2187 Parsing feeds: 2006/2187 Parsing feeds: 2007/2187 Parsing feeds: 2008/2187 Parsing feeds: 2009/2187 Parsing feeds: 2010/2187 Parsing feeds: 2011/2187 Parsing feeds: 2012/2187 Parsing feeds: 2013/2187 Parsing feeds: 2014/2187 Parsing feeds: 2015/2187 Parsing feeds: 2016/2187 Parsing feeds: 2017/2187 Parsing feeds: 2018/2187 Parsing feeds: 2019/2187 Parsing feeds: 2020/2187 Parsing feeds: 2021/2187 Parsing feeds: 2022/2187 Parsing feeds: 2023/2187 Parsing feeds: 2024/2187 Parsing feeds: 2025/2187 Parsing feeds: 2026/2187 Parsing feeds: 2027/2187 Parsing feeds: 2028/2187 Parsing feeds: 2029/2187 Parsing feeds: 2030/2187 Parsing feeds: 2031/2187 Parsing feeds: 2032/2187 Parsing feeds: 2033/2187 Parsing feeds: 2034/2187 Parsing feeds: 2035/2187 Parsing feeds: 2036/2187 Parsing feeds: 2037/2187 Parsing feeds: 2038/2187 Parsing feeds: 2039/2187 Parsing feeds: 2040/2187 Parsing feeds: 2041/2187 Parsing feeds: 2042/2187 Parsing feeds: 2043/2187 Parsing feeds: 2044/2187 Parsing feeds: 2045/2187 Parsing feeds: 2046/2187 Parsing feeds: 2047/2187 Parsing feeds: 2048/2187 Parsing feeds: 2049/2187 Parsing feeds: 2050/2187 Parsing feeds: 2051/2187 Parsing feeds: 2052/2187 Parsing feeds: 2053/2187 Parsing feeds: 2054/2187 Parsing feeds: 2055/2187 Parsing feeds: 2056/2187 Parsing feeds: 2057/2187 Parsing feeds: 2058/2187 Parsing feeds: 2059/2187 Parsing feeds: 2060/2187 Parsing feeds: 2061/2187 Parsing feeds: 2062/2187 Parsing feeds: 2063/2187 Parsing feeds: 2064/2187 Parsing feeds: 2065/2187 Parsing feeds: 2066/2187 Parsing feeds: 2067/2187 Parsing feeds: 2068/2187 Parsing feeds: 2069/2187 Parsing feeds: 2070/2187 Parsing feeds: 2071/2187 Parsing feeds: 2072/2187 Parsing feeds: 2073/2187 Parsing feeds: 2074/2187 Parsing feeds: 2075/2187 Parsing feeds: 2076/2187 Parsing feeds: 2077/2187 Parsing feeds: 2078/2187 Parsing feeds: 2079/2187 Parsing feeds: 2080/2187 Parsing feeds: 2081/2187 Parsing feeds: 2082/2187 Parsing feeds: 2083/2187 Parsing feeds: 2084/2187 Parsing feeds: 2085/2187 Parsing feeds: 2086/2187 Parsing feeds: 2087/2187 Parsing feeds: 2088/2187 Parsing feeds: 2089/2187 Parsing feeds: 2090/2187 Parsing feeds: 2091/2187 Parsing feeds: 2092/2187 Parsing feeds: 2093/2187 Parsing feeds: 2094/2187 Parsing feeds: 2095/2187 Parsing feeds: 2096/2187 Parsing feeds: 2097/2187 Parsing feeds: 2098/2187 Parsing feeds: 2099/2187 Parsing feeds: 2100/2187 Parsing feeds: 2101/2187 Parsing feeds: 2102/2187 Parsing feeds: 2103/2187 Parsing feeds: 2104/2187 Parsing feeds: 2105/2187 Parsing feeds: 2106/2187 Parsing feeds: 2107/2187 Parsing feeds: 2108/2187 Parsing feeds: 2109/2187 Parsing feeds: 2110/2187 Parsing feeds: 2111/2187 Parsing feeds: 2112/2187 Parsing feeds: 2113/2187 Parsing feeds: 2114/2187 Parsing feeds: 2115/2187 Parsing feeds: 2116/2187 Parsing feeds: 2117/2187 Parsing feeds: 2118/2187 Parsing feeds: 2119/2187 Parsing feeds: 2120/2187 Parsing feeds: 2121/2187 Parsing feeds: 2122/2187 Parsing feeds: 2123/2187 Parsing feeds: 2124/2187 Parsing feeds: 2125/2187 Parsing feeds: 2126/2187 Parsing feeds: 2127/2187 Parsing feeds: 2128/2187 Parsing feeds: 2129/2187 Parsing feeds: 2130/2187 Parsing feeds: 2131/2187 Parsing feeds: 2132/2187 Parsing feeds: 2133/2187 Parsing feeds: 2134/2187 Parsing feeds: 2135/2187 Parsing feeds: 2136/2187 Parsing feeds: 2137/2187 Parsing feeds: 2138/2187 Parsing feeds: 2139/2187 Parsing feeds: 2140/2187 Parsing feeds: 2141/2187 Parsing feeds: 2142/2187 Parsing feeds: 2143/2187 Parsing feeds: 2144/2187 Parsing feeds: 2145/2187 Parsing feeds: 2146/2187 Parsing feeds: 2147/2187 Parsing feeds: 2148/2187 Parsing feeds: 2149/2187 Parsing feeds: 2150/2187 Parsing feeds: 2151/2187 Parsing feeds: 2152/2187 Parsing feeds: 2153/2187 Parsing feeds: 2154/2187 Parsing feeds: 2155/2187 Parsing feeds: 2156/2187 Parsing feeds: 2157/2187 Parsing feeds: 2158/2187 Parsing feeds: 2159/2187 Parsing feeds: 2160/2187 Parsing feeds: 2161/2187 Parsing feeds: 2162/2187 Parsing feeds: 2163/2187 Parsing feeds: 2164/2187 Parsing feeds: 2165/2187 Parsing feeds: 2166/2187 Parsing feeds: 2167/2187 Parsing feeds: 2168/2187 Parsing feeds: 2169/2187 Parsing feeds: 2170/2187 Parsing feeds: 2171/2187 Parsing feeds: 2172/2187 Parsing feeds: 2173/2187 Parsing feeds: 2174/2187 Parsing feeds: 2175/2187 Parsing feeds: 2176/2187 Parsing feeds: 2177/2187 Parsing feeds: 2178/2187 Parsing feeds: 2179/2187 Parsing feeds: 2180/2187 Parsing feeds: 2181/2187 Parsing feeds: 2182/2187 Parsing feeds: 2183/2187 Parsing feeds: 2184/2187 Parsing feeds: 2185/2187 Parsing feeds: 2186/2187 Parsing feeds: 2187/2187 Finished parsing feeds: 2187/2187 INFO:root:Saved season data to data/20232024.csv INFO:root:Finished _season: feeds=2187, records=593339 Loading season data for 20252026... Loaded season dataframe from data/20252026/20252026.csv -> shape=(126497, 23) INFO:root:Loaded cached shifts for game 2025020429 from data/20252026/shifts/shifts_2025020429.pkl Ensuring xG predictions... Found 32 teams: ['ANA', 'BOS', 'BUF', 'CAR', 'CBJ', 'CGY', 'CHI', 'COL', 'DAL', 'DET', 'EDM', 'FLA', 'LAK', 'MIN', 'MTL', 'NJD', 'NSH', 'NYI', 'NYR', 'OTT', 'PHI', 'PIT', 'SEA', 'SJS', 'STL', 'TBL', 'TOR', 'UTA', 'VAN', 'VGK', 'WPG', 'WSH'] --- PASS 1: Calculating Player Stats (Game-Centric) --- Found 463 games to process. Processing game 10/463: 2025010082... Processing game 20/463: 2025010092... Processing game 30/463: 2025020002... Processing game 40/463: 2025020012... Processing game 50/463: 2025020022... Processing game 60/463: 2025020032... Processing game 70/463: 2025020042... Processing game 80/463: 2025020052... Processing game 90/463: 2025020062... Processing game 100/463: 2025020072... Processing game 110/463: 2025020082... Processing game 120/463: 2025020092... Processing game 130/463: 2025020102... Processing game 140/463: 2025020112... Processing game 150/463: 2025020122... Processing game 160/463: 2025020132... Processing game 170/463: 2025020142... Processing game 180/463: 2025020152... Processing game 190/463: 2025020162... Processing game 200/463: 2025020172... Processing game 210/463: 2025020182... Processing game 220/463: 2025020192... Processing game 230/463: 2025020202... Processing game 240/463: 2025020212... Processing game 250/463: 2025020222... Processing game 260/463: 2025020232... Processing game 270/463: 2025020242... Processing game 280/463: 2025020252... Processing game 290/463: 2025020262... Processing game 300/463: 2025020272... Processing game 310/463: 2025020282... Processing game 320/463: 2025020292... Processing game 330/463: 2025020302... Processing game 340/463: 2025020312... Processing game 350/463: 2025020322... Processing game 360/463: 2025020332... Processing game 370/463: 2025020342... Processing game 380/463: 2025020352... Processing game 390/463: 2025020362... Processing game 400/463: 2025020372... Processing game 410/463: 2025020382... Processing game 420/463: 2025020392... Processing game 430/463: 2025020402... Processing game 440/463: 2025020412... Processing game 450/463: 2025020422... Failed to load cache for 2025020429, recalculating: Expecting value: line 1 column 14896 (char 14895) xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 52 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=18 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 39 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=19 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 85 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 45 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=15 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 42 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=10 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 177 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 64 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 45 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=14 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 63 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=13 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 47 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=10 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 177 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=14 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 52 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=16 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 57 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=23 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 62 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=13 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 40 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=18 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 52 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=12 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 43 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=24 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 73 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=15 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 55 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 51 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=19 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 64 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=12 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 32 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=10 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 35 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=18 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 67 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=15 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 40 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=11 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 29 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=14 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 47 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=1 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 _apply_intervals debug: no rows matched any intervals intervals_obj per_game count = 1 game 2025020429 intervals_parsed= 1 skipped_games (sample): [('2025020429', 'no_matches')] df_in shape: (294, 24) columns_count= 24 Warning: condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} (team=18) matched 0 rows; producing an empty plot without training/loading model DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=18 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 48 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=12 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 46 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 40 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=19 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 59 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=16 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 50 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=12 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 53 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=9 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 40 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=14 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 51 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=10 team_for_game=18 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 50 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} xgs_map: using provided DataFrame (in-memory) -> rows= 294 _apply_intervals: intervals per_game count=1 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=13 team_for_game=13 _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 52 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13 DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} Failed to save cache for 2025020429: Object of type int64 is not JSON serializable Processing game 460/463: 2025020432... Aggregating stats per player... Saved master stats to analysis/players/20252026/league/league_player_stats.csv --- Calculating Percentiles --- --- PASS 2: Generating Maps --- Generating maps for 797 qualified players (>= 5 games). Processing ANA (Plotting)... Generating maps for 1 players (skipped 23 up-to-date). players: Starting analysis. Scope=season, Team=ANA, Condition={'game_state': ['5v5'], 'is_net_empty': [0]} DEBUG: analyze.players called INFO:root:Loaded cached shifts for game 2025010073 from data/20252026/shifts/shifts_2025010073.pkl INFO:root:Loaded cached shifts for game 2025020091 from data/20252026/shifts/shifts_2025020091.pkl INFO:root:Loaded cached shifts for game 2025020129 from data/20252026/shifts/shifts_2025020129.pkl INFO:root:Loaded cached shifts for game 2025020153 from data/20252026/shifts/shifts_2025020153.pkl INFO:root:Loaded cached shifts for game 2025020180 from data/20252026/shifts/shifts_2025020180.pkl INFO:root:Loaded cached shifts for game 2025020197 from data/20252026/shifts/shifts_2025020197.pkl INFO:root:Loaded cached shifts for game 2025020211 from data/20252026/shifts/shifts_2025020211.pkl INFO:root:Loaded cached shifts for game 2025020224 from data/20252026/shifts/shifts_2025020224.pkl INFO:root:Loaded cached shifts for game 2025020242 from data/20252026/shifts/shifts_2025020242.pkl INFO:root:Loaded cached shifts for game 2025020251 from data/20252026/shifts/shifts_2025020251.pkl INFO:root:Loaded cached shifts for game 2025020262 from data/20252026/shifts/shifts_2025020262.pkl INFO:root:Loaded cached shifts for game 2025020272 from data/20252026/shifts/shifts_2025020272.pkl INFO:root:Loaded cached shifts for game 2025020284 from data/20252026/shifts/shifts_2025020284.pkl INFO:root:Loaded cached shifts for game 2025020306 from data/20252026/shifts/shifts_2025020306.pkl INFO:root:Loaded cached shifts for game 2025020318 from data/20252026/shifts/shifts_2025020318.pkl INFO:root:Loaded cached shifts for game 2025020329 from data/20252026/shifts/shifts_2025020329.pkl INFO:root:Loaded cached shifts for game 2025020409 from data/20252026/shifts/shifts_2025020409.pkl INFO:root:Loaded cached shifts for game 2025020424 from data/20252026/shifts/shifts_2025020424.pkl players: Ensuring xG predictions... players: Found 29 players for team ANA players: Loading league baseline... players: Using baseline path: analysis/league/20252026/5v5 league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy players: Analyzing 29 players... xgs_map: using provided DataFrame (in-memory) -> rows= 5076 _apply_intervals: intervals per_game count=18 _apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025010073 df_game_rows=224 _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020129 df_game_rows=316 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020242 df_game_rows=298 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 _apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020284 df_game_rows=259 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020329 df_game_rows=280 _apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020409 df_game_rows=256 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 1068 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482178, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [24 28 16 14 13 17 1 25 54 52 21 30 68 6 9 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482178, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482178, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025010090 from data/20252026/shifts/shifts_2025010090.pkl INFO:root:Loaded cached shifts for game 2025020021 from data/20252026/shifts/shifts_2025020021.pkl INFO:root:Loaded cached shifts for game 2025020036 from data/20252026/shifts/shifts_2025020036.pkl INFO:root:Loaded cached shifts for game 2025020056 from data/20252026/shifts/shifts_2025020056.pkl INFO:root:Loaded cached shifts for game 2025020070 from data/20252026/shifts/shifts_2025020070.pkl INFO:root:Loaded cached shifts for game 2025020105 from data/20252026/shifts/shifts_2025020105.pkl INFO:root:Loaded cached shifts for game 2025020111 from data/20252026/shifts/shifts_2025020111.pkl INFO:root:Loaded cached shifts for game 2025020346 from data/20252026/shifts/shifts_2025020346.pkl INFO:root:Loaded cached shifts for game 2025020374 from data/20252026/shifts/shifts_2025020374.pkl INFO:root:Loaded cached shifts for game 2025020384 from data/20252026/shifts/shifts_2025020384.pkl INFO:root:Loaded cached shifts for game 2025020403 from data/20252026/shifts/shifts_2025020403.pkl Saved plot to analysis/players/20252026/ANA/8482178_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8020 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020036 df_game_rows=294 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020129 df_game_rows=316 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020242 df_game_rows=298 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 _apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020284 df_game_rows=259 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020329 df_game_rows=280 _apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020346 df_game_rows=296 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=12 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020409 df_game_rows=256 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 1485 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473986, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [24 26 55 28 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473986, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473986, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8473986_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2946 _apply_intervals: intervals per_game count=10 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020036 df_game_rows=294 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=5 team_for_game=ANA _apply_intervals: game 2025020129 df_game_rows=316 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 Filtered season dataframe to 492 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475798, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [24 26 55 28 5 16 18 6 14 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475798, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475798, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8475798_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8244 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025010073 df_game_rows=224 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020036 df_game_rows=294 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020129 df_game_rows=316 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020242 df_game_rows=298 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 _apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020284 df_game_rows=259 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020329 df_game_rows=280 _apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020346 df_game_rows=296 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020409 df_game_rows=256 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 1561 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478873, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [28 24 26 55 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478873, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478873, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8478873_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8244 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025010073 df_game_rows=224 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=24 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020036 df_game_rows=294 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=28 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020129 df_game_rows=316 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=24 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=29 team_for_game=ANA _apply_intervals: game 2025020242 df_game_rows=298 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=25 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 _apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020284 df_game_rows=259 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=24 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=24 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020329 df_game_rows=280 _apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020346 df_game_rows=296 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020409 df_game_rows=256 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 1955 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481563, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [28 24 26 55 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481563, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481563, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8481563_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8244 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=12 team_for_game=ANA _apply_intervals: game 2025010073 df_game_rows=224 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020036 df_game_rows=294 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020129 df_game_rows=316 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020242 df_game_rows=298 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 _apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020284 df_game_rows=259 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020329 df_game_rows=280 _apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020346 df_game_rows=296 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020409 df_game_rows=256 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=24 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 1841 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484762, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [24 28 26 55 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484762, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484762, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8484762_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7948 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025010073 df_game_rows=224 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020036 df_game_rows=294 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020129 df_game_rows=316 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=12 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020242 df_game_rows=298 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 _apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020284 df_game_rows=259 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020329 df_game_rows=280 _apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020346 df_game_rows=296 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=12 team_for_game=ANA _apply_intervals: game 2025020409 df_game_rows=256 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 1396 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478366, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [24 28 26 55 5 16 18 6 14 13 17 1 25 54 52 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478366, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478366, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8478366_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7389 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025010073 df_game_rows=224 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020036 df_game_rows=294 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=24 team_for_game=ANA _apply_intervals: game 2025020129 df_game_rows=316 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020242 df_game_rows=298 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 _apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020284 df_game_rows=259 _apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=27 team_for_game=ANA _apply_intervals: game 2025020346 df_game_rows=296 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020409 df_game_rows=256 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 1599 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483490, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [28 24 26 55 5 16 18 6 14 13 17 1 25 54 52 21 30 23 19 68] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483490, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483490, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8483490_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2549 _apply_intervals: intervals per_game count=9 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 _apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020284 df_game_rows=259 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020346 df_game_rows=296 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 Filtered season dataframe to 447 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476458, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [24 26 17 30 68 6 54 23 16] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476458, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476458, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8476458_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6554 _apply_intervals: intervals per_game count=23 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020036 df_game_rows=294 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020242 df_game_rows=298 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020329 df_game_rows=280 _apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020346 df_game_rows=296 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020409 df_game_rows=256 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 1218 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475184, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [24 26 55 28 5 16 17 1 13 25 54 52 21 68 6 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475184, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475184, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8475184_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8244 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025010073 df_game_rows=224 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020036 df_game_rows=294 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=24 team_for_game=ANA _apply_intervals: game 2025020129 df_game_rows=316 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=24 team_for_game=ANA _apply_intervals: game 2025020242 df_game_rows=298 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 _apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020284 df_game_rows=259 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020329 df_game_rows=280 _apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020346 df_game_rows=296 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020409 df_game_rows=256 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 1648 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484153, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [28 24 26 55 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484153, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484153, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8484153_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8020 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020036 df_game_rows=294 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020129 df_game_rows=316 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020242 df_game_rows=298 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 _apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020284 df_game_rows=259 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020329 df_game_rows=280 _apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020346 df_game_rows=296 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020409 df_game_rows=256 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 1731 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482745, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [24 26 55 28 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482745, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482745, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8482745_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5332 _apply_intervals: intervals per_game count=19 _apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025010073 df_game_rows=224 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=8 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020129 df_game_rows=316 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=11 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020409 df_game_rows=256 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 846 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480068, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [24 28 26 55 5 16 18 14 13 17 1 25 52 21 19 68] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480068, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480068, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8480068_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8020 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=25 team_for_game=ANA _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=28 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020036 df_game_rows=294 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=26 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=24 team_for_game=ANA _apply_intervals: game 2025020129 df_game_rows=316 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=28 team_for_game=ANA _apply_intervals: game 2025020242 df_game_rows=298 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 _apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020284 df_game_rows=259 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=26 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=24 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020329 df_game_rows=280 _apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=25 team_for_game=ANA _apply_intervals: game 2025020346 df_game_rows=296 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=24 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020409 df_game_rows=256 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 1940 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481605, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [24 26 55 28 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481605, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481605, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8481605_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2007 _apply_intervals: intervals per_game count=7 _apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025010073 df_game_rows=224 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=11 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=11 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 Filtered season dataframe to 327 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482118, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [28 24 55 16 18 6 13 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482118, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482118, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8482118_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4867 _apply_intervals: intervals per_game count=17 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=26 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020036 df_game_rows=294 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=6 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020329 df_game_rows=280 _apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=26 team_for_game=ANA _apply_intervals: game 2025020346 df_game_rows=296 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020409 df_game_rows=256 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 1104 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475462, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [24 26 55 28 5 16 18 6 68 9 54 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475462, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475462, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8475462_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1454 _apply_intervals: intervals per_game count=5 _apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=10 team_for_game=ANA _apply_intervals: game 2025020036 df_game_rows=294 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=7 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=5 team_for_game=ANA _apply_intervals: game 2025020242 df_game_rows=298 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=11 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=8 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 Filtered season dataframe to 1091 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475852, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [28 24 6 54 23 16] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475852, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475852, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8475852_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8020 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=24 team_for_game=ANA _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=25 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=24 team_for_game=ANA _apply_intervals: game 2025020036 df_game_rows=294 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=25 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=34 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=28 team_for_game=ANA _apply_intervals: game 2025020129 df_game_rows=316 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=25 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=28 team_for_game=ANA _apply_intervals: game 2025020242 df_game_rows=298 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=25 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=26 team_for_game=ANA _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 _apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020284 df_game_rows=259 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=24 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=24 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020329 df_game_rows=280 _apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=24 team_for_game=ANA _apply_intervals: game 2025020346 df_game_rows=296 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020409 df_game_rows=256 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 2213 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476885, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [24 26 55 28 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476885, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476885, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8476885_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6177 _apply_intervals: intervals per_game count=22 _apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025010073 df_game_rows=224 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=11 team_for_game=ANA _apply_intervals: game 2025020129 df_game_rows=316 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=12 team_for_game=ANA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=10 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020242 df_game_rows=298 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 _apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=12 team_for_game=ANA _apply_intervals: game 2025020284 df_game_rows=259 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=11 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020329 df_game_rows=280 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=12 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=9 team_for_game=ANA _apply_intervals: game 2025020409 df_game_rows=256 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 908 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477527, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [24 28 55 5 18 6 14 13 17 1 25 54 52 30 68 9 26 16 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477527, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477527, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8477527_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 3406 _apply_intervals: intervals per_game count=12 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020284 df_game_rows=259 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020329 df_game_rows=280 _apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=12 team_for_game=ANA _apply_intervals: game 2025020346 df_game_rows=296 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=10 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 518 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478424, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [24 1 13 25 52 21 30 68 6 9 54 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478424, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478424, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8478424_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6210 _apply_intervals: intervals per_game count=22 _apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025010073 df_game_rows=224 _apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=10 team_for_game=ANA _apply_intervals: game 2025020036 df_game_rows=294 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020129 df_game_rows=316 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020242 df_game_rows=298 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 _apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=13 team_for_game=ANA _apply_intervals: game 2025020284 df_game_rows=259 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=12 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=12 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020329 df_game_rows=280 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=12 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=11 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 Filtered season dataframe to 1038 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481754, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [28 24 5 18 6 14 17 1 13 25 54 52 21 30 68 9 23 26 16] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481754, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481754, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8481754_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8244 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025010073 df_game_rows=224 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=27 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=26 team_for_game=ANA _apply_intervals: game 2025020036 df_game_rows=294 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=27 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020129 df_game_rows=316 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=27 team_for_game=ANA _apply_intervals: game 2025020242 df_game_rows=298 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=24 team_for_game=ANA _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 _apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020284 df_game_rows=259 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020329 df_game_rows=280 _apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020346 df_game_rows=296 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=11 team_for_game=ANA _apply_intervals: game 2025020409 df_game_rows=256 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 2143 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482803, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [28 24 26 55 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482803, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482803, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8482803_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8244 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025010073 df_game_rows=224 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020021 df_game_rows=310 _apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020036 df_game_rows=294 _apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020056 df_game_rows=261 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020129 df_game_rows=316 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020180 df_game_rows=286 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020242 df_game_rows=298 _apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=17 team_for_game=ANA _apply_intervals: game 2025020251 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=19 team_for_game=ANA _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020272 df_game_rows=297 _apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=12 team_for_game=ANA _apply_intervals: game 2025020284 df_game_rows=259 _apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020306 df_game_rows=254 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=20 team_for_game=ANA _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=21 team_for_game=ANA _apply_intervals: game 2025020329 df_game_rows=280 _apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=23 team_for_game=ANA _apply_intervals: game 2025020346 df_game_rows=296 _apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020374 df_game_rows=304 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=18 team_for_game=ANA _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=15 team_for_game=ANA _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=16 team_for_game=ANA _apply_intervals: game 2025020409 df_game_rows=256 _apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=22 team_for_game=ANA _apply_intervals: game 2025020424 df_game_rows=292 Filtered season dataframe to 1788 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483445, 'team': 'ANA'} team='ANA' DEBUG: xgs_map df_filtered unique teams: [28 24 26 55 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483445, 'team': 'ANA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483445, 'team': 'ANA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/ANA/8483445_map.png players: Saved stats to analysis/players/20252026/ANA/player_stats.csv players: Scatter plot includes 23 players (min_games=5) players: Saved scatter plot to analysis/players/20252026/ANA/player_scatter.png players: Analysis complete. Processing BOS (Plotting)... Generating maps for 3 players (skipped 24 up-to-date). players: Starting analysis. Scope=season, Team=BOS, Condition={'game_state': ['5v5'], 'is_net_empty': [0]} DEBUG: analyze.players called INFO:root:Loaded cached shifts for game 2025010078 from data/20252026/shifts/shifts_2025010078.pkl INFO:root:Loaded cached shifts for game 2025010095 from data/20252026/shifts/shifts_2025010095.pkl INFO:root:Loaded cached shifts for game 2025020005 from data/20252026/shifts/shifts_2025020005.pkl INFO:root:Loaded cached shifts for game 2025020008 from data/20252026/shifts/shifts_2025020008.pkl INFO:root:Loaded cached shifts for game 2025020024 from data/20252026/shifts/shifts_2025020024.pkl INFO:root:Loaded cached shifts for game 2025020040 from data/20252026/shifts/shifts_2025020040.pkl INFO:root:Loaded cached shifts for game 2025020092 from data/20252026/shifts/shifts_2025020092.pkl INFO:root:Loaded cached shifts for game 2025020149 from data/20252026/shifts/shifts_2025020149.pkl INFO:root:Loaded cached shifts for game 2025020167 from data/20252026/shifts/shifts_2025020167.pkl INFO:root:Loaded cached shifts for game 2025020181 from data/20252026/shifts/shifts_2025020181.pkl INFO:root:Loaded cached shifts for game 2025020205 from data/20252026/shifts/shifts_2025020205.pkl INFO:root:Loaded cached shifts for game 2025020218 from data/20252026/shifts/shifts_2025020218.pkl INFO:root:Loaded cached shifts for game 2025020234 from data/20252026/shifts/shifts_2025020234.pkl INFO:root:Loaded cached shifts for game 2025020256 from data/20252026/shifts/shifts_2025020256.pkl INFO:root:Loaded cached shifts for game 2025020271 from data/20252026/shifts/shifts_2025020271.pkl INFO:root:Loaded cached shifts for game 2025020285 from data/20252026/shifts/shifts_2025020285.pkl INFO:root:Loaded cached shifts for game 2025020301 from data/20252026/shifts/shifts_2025020301.pkl INFO:root:Loaded cached shifts for game 2025020334 from data/20252026/shifts/shifts_2025020334.pkl INFO:root:Loaded cached shifts for game 2025020351 from data/20252026/shifts/shifts_2025020351.pkl INFO:root:Loaded cached shifts for game 2025020365 from data/20252026/shifts/shifts_2025020365.pkl INFO:root:Loaded cached shifts for game 2025020376 from data/20252026/shifts/shifts_2025020376.pkl INFO:root:Loaded cached shifts for game 2025020394 from data/20252026/shifts/shifts_2025020394.pkl INFO:root:Loaded cached shifts for game 2025020412 from data/20252026/shifts/shifts_2025020412.pkl players: Ensuring xG predictions... players: Found 35 players for team BOS players: Loading league baseline... players: Using baseline path: analysis/league/20252026/5v5 league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy players: Analyzing 35 players... xgs_map: using provided DataFrame (in-memory) -> rows= 6974 _apply_intervals: intervals per_game count=24 _apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025010078 df_game_rows=257 _apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025010095 df_game_rows=287 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 _apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020218 df_game_rows=270 _apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020234 df_game_rows=323 _apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020256 df_game_rows=307 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020351 df_game_rows=291 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 _apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020376 df_game_rows=277 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 Filtered season dataframe to 1272 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482177, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 15 3 16 7 14 68 9 12 2 10 8 24 26 28 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482177, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482177, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025020069 from data/20252026/shifts/shifts_2025020069.pkl INFO:root:Loaded cached shifts for game 2025020085 from data/20252026/shifts/shifts_2025020085.pkl INFO:root:Loaded cached shifts for game 2025020103 from data/20252026/shifts/shifts_2025020103.pkl INFO:root:Loaded cached shifts for game 2025020128 from data/20252026/shifts/shifts_2025020128.pkl INFO:root:Loaded cached shifts for game 2025020154 from data/20252026/shifts/shifts_2025020154.pkl Saved plot to analysis/players/20252026/BOS/8482177_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7582 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025010095 df_game_rows=287 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020154 df_game_rows=240 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 _apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020218 df_game_rows=270 _apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020234 df_game_rows=323 _apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020256 df_game_rows=307 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=13 team_for_game=BOS _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020351 df_game_rows=291 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 Filtered season dataframe to 1572 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477956, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 3 6 15 16 7 14 68 13 24 21 9 2 12 10 8 26 28] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477956, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477956, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025020426 from data/20252026/shifts/shifts_2025020426.pkl Saved plot to analysis/players/20252026/BOS/8477956_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8723 _apply_intervals: intervals per_game count=30 _apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025010095 df_game_rows=287 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=25 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=26 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=25 team_for_game=BOS _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020154 df_game_rows=240 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=25 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 _apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020218 df_game_rows=270 _apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020234 df_game_rows=323 _apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020256 df_game_rows=307 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=25 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020351 df_game_rows=291 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 _apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020376 df_game_rows=277 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=27 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 _apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=25 team_for_game=BOS _apply_intervals: game 2025020426 df_game_rows=278 Filtered season dataframe to 2204 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479369, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 3 15 16 7 14 68 13 24 21 9 2 12 10 8 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479369, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479369, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8479369_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 3305 _apply_intervals: intervals per_game count=5 _apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025010078 df_game_rows=257 _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=11 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 Filtered season dataframe to 154 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481556, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 15 68 12 2] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481556, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481556, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8481556_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8426 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025010095 df_game_rows=287 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=13 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020154 df_game_rows=240 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 _apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020218 df_game_rows=270 _apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020234 df_game_rows=323 _apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020256 df_game_rows=307 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020351 df_game_rows=291 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 _apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020376 df_game_rows=277 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 _apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020426 df_game_rows=278 Filtered season dataframe to 1606 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483489, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 3 15 16 7 14 68 24 21 9 2 12 10 8 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483489, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483489, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8483489_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7547 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025010078 df_game_rows=257 _apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025010095 df_game_rows=287 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=26 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=25 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020154 df_game_rows=240 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 _apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020218 df_game_rows=270 _apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020234 df_game_rows=323 _apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020256 df_game_rows=307 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=25 team_for_game=BOS _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020351 df_game_rows=291 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=24 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 _apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020376 df_game_rows=277 Filtered season dataframe to 1657 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480035, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 15 3 16 7 14 68 13 24 21 9 2 10 12 26 28] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480035, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480035, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8480035_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8723 _apply_intervals: intervals per_game count=30 _apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025010095 df_game_rows=287 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020154 df_game_rows=240 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 _apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020218 df_game_rows=270 _apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020234 df_game_rows=323 _apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020256 df_game_rows=307 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=13 team_for_game=BOS _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020351 df_game_rows=291 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 _apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020376 df_game_rows=277 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 _apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020426 df_game_rows=278 Filtered season dataframe to 1631 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479661, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 3 6 15 16 7 14 68 13 24 21 9 2 12 10 8 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479661, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479661, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8479661_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1428 _apply_intervals: intervals per_game count=5 _apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025010078 df_game_rows=257 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=13 team_for_game=BOS _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=2 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 Filtered season dataframe to 215 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481712, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 15 12 24 26 2] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481712, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481712, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8481712_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6349 _apply_intervals: intervals per_game count=22 _apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025010095 df_game_rows=287 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=6 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020154 df_game_rows=240 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=24 team_for_game=BOS _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=24 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 _apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=24 team_for_game=BOS _apply_intervals: game 2025020218 df_game_rows=270 _apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=24 team_for_game=BOS _apply_intervals: game 2025020234 df_game_rows=323 _apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020256 df_game_rows=307 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=25 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020351 df_game_rows=291 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 _apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020376 df_game_rows=277 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=26 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 _apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=24 team_for_game=BOS _apply_intervals: game 2025020426 df_game_rows=278 Filtered season dataframe to 1492 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476854, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 3 15 16 2 7 12 9 10 8 24 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476854, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476854, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8476854_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5500 _apply_intervals: intervals per_game count=19 _apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025010095 df_game_rows=287 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020154 df_game_rows=240 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=9 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020351 df_game_rows=291 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 _apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020376 df_game_rows=277 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 _apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020426 df_game_rows=278 Filtered season dataframe to 1040 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477496, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 3 6 15 16 7 14 68 13 24 21 9 2 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477496, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477496, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8477496_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1715 _apply_intervals: intervals per_game count=6 _apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025010078 df_game_rows=257 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=25 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=24 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=5 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 Filtered season dataframe to 312 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480828, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 15 24 21 9 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480828, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480828, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8480828_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8446 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025010095 df_game_rows=287 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020154 df_game_rows=240 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 _apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020218 df_game_rows=270 _apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=13 team_for_game=BOS _apply_intervals: game 2025020234 df_game_rows=323 _apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=13 team_for_game=BOS _apply_intervals: game 2025020256 df_game_rows=307 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=11 team_for_game=BOS _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020351 df_game_rows=291 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 _apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020426 df_game_rows=278 Filtered season dataframe to 1372 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478401, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 3 15 16 7 14 68 13 24 21 9 2 12 10 8 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478401, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478401, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8478401_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4845 _apply_intervals: intervals per_game count=17 _apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025010078 df_game_rows=257 _apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020154 df_game_rows=240 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 _apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020218 df_game_rows=270 _apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020234 df_game_rows=323 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=13 team_for_game=BOS _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020351 df_game_rows=291 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 _apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020376 df_game_rows=277 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=25 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 _apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=25 team_for_game=BOS _apply_intervals: game 2025020426 df_game_rows=278 Filtered season dataframe to 1181 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481219, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 15 2 7 12 9 10 8 24 26 28 3 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481219, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481219, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8481219_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8482 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025010095 df_game_rows=287 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=26 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=24 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=25 team_for_game=BOS _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=25 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020154 df_game_rows=240 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 _apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=26 team_for_game=BOS _apply_intervals: game 2025020218 df_game_rows=270 _apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020234 df_game_rows=323 _apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020256 df_game_rows=307 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=25 team_for_game=BOS _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=25 team_for_game=BOS _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=24 team_for_game=BOS _apply_intervals: game 2025020351 df_game_rows=291 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 _apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=24 team_for_game=BOS _apply_intervals: game 2025020376 df_game_rows=277 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 _apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=24 team_for_game=BOS _apply_intervals: game 2025020426 df_game_rows=278 Filtered season dataframe to 2131 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477507, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 3 6 15 16 7 14 68 13 24 21 9 2 10 8 12 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477507, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477507, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8477507_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4087 _apply_intervals: intervals per_game count=14 _apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025010078 df_game_rows=257 _apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=13 team_for_game=BOS _apply_intervals: game 2025020234 df_game_rows=323 _apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=10 team_for_game=BOS _apply_intervals: game 2025020256 df_game_rows=307 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=13 team_for_game=BOS _apply_intervals: game 2025020351 df_game_rows=291 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=13 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 _apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020376 df_game_rows=277 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 _apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020426 df_game_rows=278 Filtered season dataframe to 663 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482634, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 15 10 9 8 12 24 26 28 2 3 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482634, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482634, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8482634_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7646 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025010078 df_game_rows=257 _apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025010095 df_game_rows=287 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=25 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=26 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020234 df_game_rows=323 _apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020256 df_game_rows=307 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020351 df_game_rows=291 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 _apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020376 df_game_rows=277 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 _apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020426 df_game_rows=278 Filtered season dataframe to 1697 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482511, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 15 3 16 7 14 68 13 24 21 9 10 8 12 26 28 2 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482511, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482511, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8482511_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8723 _apply_intervals: intervals per_game count=30 _apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025010095 df_game_rows=287 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=13 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020154 df_game_rows=240 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 _apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020218 df_game_rows=270 _apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020234 df_game_rows=323 _apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020256 df_game_rows=307 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=8 team_for_game=BOS _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=11 team_for_game=BOS _apply_intervals: game 2025020351 df_game_rows=291 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 _apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020376 df_game_rows=277 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 _apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020426 df_game_rows=278 Filtered season dataframe to 1403 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476374, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 3 6 15 16 7 14 68 13 24 21 9 2 12 10 8 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476374, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476374, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8476374_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1797 _apply_intervals: intervals per_game count=6 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=11 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 Filtered season dataframe to 279 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479705, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 13 24 9 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479705, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479705, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8479705_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6692 _apply_intervals: intervals per_game count=23 _apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025010095 df_game_rows=287 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020154 df_game_rows=240 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 _apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020218 df_game_rows=270 _apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=13 team_for_game=BOS _apply_intervals: game 2025020234 df_game_rows=323 _apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020256 df_game_rows=307 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=9 team_for_game=BOS _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 _apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020426 df_game_rows=278 Filtered season dataframe to 1065 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478042, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 3 15 16 7 14 68 13 24 21 9 2 12 10 8 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478042, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478042, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8478042_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5797 _apply_intervals: intervals per_game count=20 _apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025010095 df_game_rows=287 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=28 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=26 team_for_game=BOS _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=27 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020154 df_game_rows=240 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=24 team_for_game=BOS _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=23 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 _apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=25 team_for_game=BOS _apply_intervals: game 2025020218 df_game_rows=270 _apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020256 df_game_rows=307 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=9 team_for_game=BOS _apply_intervals: game 2025020285 df_game_rows=328 Filtered season dataframe to 1337 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479325, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 3 15 16 7 14 68 13 24 21 9 2 12 10 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479325, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479325, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8479325_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8384 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025010078 df_game_rows=257 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=10 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=10 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=13 team_for_game=BOS _apply_intervals: game 2025020154 df_game_rows=240 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 _apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020218 df_game_rows=270 _apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020234 df_game_rows=323 _apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020256 df_game_rows=307 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020351 df_game_rows=291 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 _apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020376 df_game_rows=277 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 _apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020426 df_game_rows=278 Filtered season dataframe to 1457 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480355, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 15 16 7 14 68 13 24 21 9 2 12 10 8 26 28 3 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480355, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480355, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8480355_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8723 _apply_intervals: intervals per_game count=30 _apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025010095 df_game_rows=287 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=11 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020154 df_game_rows=240 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=13 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=13 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 _apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020218 df_game_rows=270 _apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020234 df_game_rows=323 _apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=10 team_for_game=BOS _apply_intervals: game 2025020256 df_game_rows=307 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020351 df_game_rows=291 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 _apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020376 df_game_rows=277 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 _apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020426 df_game_rows=278 Filtered season dataframe to 1418 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479591, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 3 6 15 16 7 14 68 13 24 21 9 2 12 10 8 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479591, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479591, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8479591_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8723 _apply_intervals: intervals per_game count=30 _apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025010095 df_game_rows=287 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=22 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=13 team_for_game=BOS _apply_intervals: game 2025020154 df_game_rows=240 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 _apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020218 df_game_rows=270 _apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020234 df_game_rows=323 _apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020256 df_game_rows=307 _apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020271 df_game_rows=269 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=12 team_for_game=BOS _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020318 df_game_rows=321 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020351 df_game_rows=291 _apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020365 df_game_rows=256 _apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020376 df_game_rows=277 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 _apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020426 df_game_rows=278 Filtered season dataframe to 1721 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479987, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 3 6 15 16 7 14 68 13 24 21 9 2 12 10 8 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479987, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479987, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8479987_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1759 _apply_intervals: intervals per_game count=6 _apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025010078 df_game_rows=257 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020092 df_game_rows=296 _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=21 team_for_game=BOS _apply_intervals: game 2025020103 df_game_rows=297 Filtered season dataframe to 335 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480887, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 15 7 14 68 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480887, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480887, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8480887_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5738 _apply_intervals: intervals per_game count=20 _apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=14 team_for_game=BOS _apply_intervals: game 2025010095 df_game_rows=287 _apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020005 df_game_rows=328 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020040 df_game_rows=309 _apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=20 team_for_game=BOS _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020111 df_game_rows=309 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020149 df_game_rows=277 _apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=15 team_for_game=BOS _apply_intervals: game 2025020154 df_game_rows=240 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020205 df_game_rows=283 _apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020218 df_game_rows=270 _apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=18 team_for_game=BOS _apply_intervals: game 2025020376 df_game_rows=277 _apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=17 team_for_game=BOS _apply_intervals: game 2025020394 df_game_rows=292 _apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=16 team_for_game=BOS _apply_intervals: game 2025020412 df_game_rows=294 _apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=19 team_for_game=BOS _apply_intervals: game 2025020426 df_game_rows=278 Filtered season dataframe to 975 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479999, 'team': 'BOS'} team='BOS' DEBUG: xgs_map df_filtered unique teams: [ 6 3 15 16 7 14 13 24 21 9 2 12 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479999, 'team': 'BOS'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479999, 'team': 'BOS'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BOS/8479999_map.png players: Saved stats to analysis/players/20252026/BOS/player_stats.csv players: Scatter plot includes 25 players (min_games=5) players: Saved scatter plot to analysis/players/20252026/BOS/player_scatter.png players: Analysis complete. Processing BUF (Plotting)... Generating maps for 5 players (skipped 24 up-to-date). players: Starting analysis. Scope=season, Team=BUF, Condition={'game_state': ['5v5'], 'is_net_empty': [0]} DEBUG: analyze.players called INFO:root:Loaded cached shifts for game 2025010076 from data/20252026/shifts/shifts_2025010076.pkl INFO:root:Loaded cached shifts for game 2025010085 from data/20252026/shifts/shifts_2025010085.pkl INFO:root:Loaded cached shifts for game 2025020009 from data/20252026/shifts/shifts_2025020009.pkl INFO:root:Loaded cached shifts for game 2025020039 from data/20252026/shifts/shifts_2025020039.pkl INFO:root:Loaded cached shifts for game 2025020057 from data/20252026/shifts/shifts_2025020057.pkl INFO:root:Loaded cached shifts for game 2025020076 from data/20252026/shifts/shifts_2025020076.pkl INFO:root:Loaded cached shifts for game 2025020095 from data/20252026/shifts/shifts_2025020095.pkl INFO:root:Loaded cached shifts for game 2025020109 from data/20252026/shifts/shifts_2025020109.pkl INFO:root:Loaded cached shifts for game 2025020123 from data/20252026/shifts/shifts_2025020123.pkl INFO:root:Loaded cached shifts for game 2025020132 from data/20252026/shifts/shifts_2025020132.pkl INFO:root:Loaded cached shifts for game 2025020152 from data/20252026/shifts/shifts_2025020152.pkl INFO:root:Loaded cached shifts for game 2025020186 from data/20252026/shifts/shifts_2025020186.pkl players: Ensuring xG predictions... players: Found 32 players for team BUF players: Loading league baseline... players: Using baseline path: analysis/league/20252026/5v5 league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy players: Analyzing 32 players... xgs_map: using provided DataFrame (in-memory) -> rows= 4005 _apply_intervals: intervals per_game count=14 _apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025010076 df_game_rows=250 _apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025010085 df_game_rows=276 _apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020009 df_game_rows=298 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020109 df_game_rows=293 _apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020123 df_game_rows=278 _apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020132 df_game_rows=265 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=27 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020186 df_game_rows=288 Filtered season dataframe to 720 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483468, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483468, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483468, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025020267 from data/20252026/shifts/shifts_2025020267.pkl INFO:root:Loaded cached shifts for game 2025020302 from data/20252026/shifts/shifts_2025020302.pkl INFO:root:Loaded cached shifts for game 2025020399 from data/20252026/shifts/shifts_2025020399.pkl INFO:root:Loaded cached shifts for game 2025020423 from data/20252026/shifts/shifts_2025020423.pkl Saved plot to analysis/players/20252026/BUF/8483468_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1695 _apply_intervals: intervals per_game count=5 _apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=8 team_for_game=BUF _apply_intervals: game 2025020109 df_game_rows=293 _apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=5 team_for_game=BUF _apply_intervals: game 2025020267 df_game_rows=272 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=5 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=6 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=9 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 1091 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481551, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 17 68 22 30 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481551, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481551, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8481551_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1407 _apply_intervals: intervals per_game count=5 _apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025010076 df_game_rows=250 _apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025010085 df_game_rows=276 _apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=13 team_for_game=BUF _apply_intervals: game 2025020009 df_game_rows=298 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=12 team_for_game=BUF _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF Filtered season dataframe to 191 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481564, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 21] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481564, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481564, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025020203 from data/20252026/shifts/shifts_2025020203.pkl INFO:root:Loaded cached shifts for game 2025020219 from data/20252026/shifts/shifts_2025020219.pkl INFO:root:Loaded cached shifts for game 2025020238 from data/20252026/shifts/shifts_2025020238.pkl INFO:root:Loaded cached shifts for game 2025020275 from data/20252026/shifts/shifts_2025020275.pkl INFO:root:Loaded cached shifts for game 2025020287 from data/20252026/shifts/shifts_2025020287.pkl INFO:root:Loaded cached shifts for game 2025020316 from data/20252026/shifts/shifts_2025020316.pkl INFO:root:Loaded cached shifts for game 2025020331 from data/20252026/shifts/shifts_2025020331.pkl INFO:root:Loaded cached shifts for game 2025020347 from data/20252026/shifts/shifts_2025020347.pkl INFO:root:Loaded cached shifts for game 2025020366 from data/20252026/shifts/shifts_2025020366.pkl INFO:root:Loaded cached shifts for game 2025020379 from data/20252026/shifts/shifts_2025020379.pkl INFO:root:Loaded cached shifts for game 2025020408 from data/20252026/shifts/shifts_2025020408.pkl Saved plot to analysis/players/20252026/BUF/8481564_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7145 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025010076 df_game_rows=250 _apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=11 team_for_game=BUF _apply_intervals: game 2025010085 df_game_rows=276 _apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020009 df_game_rows=298 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020123 df_game_rows=278 _apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020132 df_game_rows=265 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020186 df_game_rows=288 _apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020203 df_game_rows=243 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020287 df_game_rows=281 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020366 df_game_rows=226 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 1412 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480802, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 10 29 15 68 19 12 17 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480802, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480802, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8480802_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6927 _apply_intervals: intervals per_game count=25 _apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020009 df_game_rows=298 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020109 df_game_rows=293 _apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=26 team_for_game=BUF _apply_intervals: game 2025020123 df_game_rows=278 _apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=25 team_for_game=BUF _apply_intervals: game 2025020132 df_game_rows=265 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020186 df_game_rows=288 _apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020203 df_game_rows=243 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020267 df_game_rows=272 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020287 df_game_rows=281 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=25 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020366 df_game_rows=226 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 1936 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480807, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 3 6 8 17 10 29 15 68 19 12 21 22 20 16 5 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480807, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480807, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8480807_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4566 _apply_intervals: intervals per_game count=17 _apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=13 team_for_game=BUF _apply_intervals: game 2025020109 df_game_rows=293 _apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=13 team_for_game=BUF _apply_intervals: game 2025020132 df_game_rows=265 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020203 df_game_rows=243 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020267 df_game_rows=272 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020287 df_game_rows=281 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=13 team_for_game=BUF _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020366 df_game_rows=226 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 775 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483500, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 17 10 29 68 19 21 22 20 16 12 5 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483500, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483500, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8483500_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8036 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025010076 df_game_rows=250 _apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025010085 df_game_rows=276 _apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020009 df_game_rows=298 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020109 df_game_rows=293 _apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020123 df_game_rows=278 _apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020132 df_game_rows=265 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020186 df_game_rows=288 _apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020203 df_game_rows=243 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020267 df_game_rows=272 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020287 df_game_rows=281 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020366 df_game_rows=226 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 1451 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482097, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15 68 19 12 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482097, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482097, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8482097_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 3906 _apply_intervals: intervals per_game count=14 _apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020109 df_game_rows=293 _apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020123 df_game_rows=278 _apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020132 df_game_rows=265 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020366 df_game_rows=226 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 683 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484145, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 8 7 17 10 29 6 12 5 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484145, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484145, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8484145_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8036 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025010076 df_game_rows=250 _apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=13 team_for_game=BUF _apply_intervals: game 2025010085 df_game_rows=276 _apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020009 df_game_rows=298 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020109 df_game_rows=293 _apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020123 df_game_rows=278 _apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020132 df_game_rows=265 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020186 df_game_rows=288 _apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020203 df_game_rows=243 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020267 df_game_rows=272 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020287 df_game_rows=281 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020366 df_game_rows=226 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 1585 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479420, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15 68 19 12 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479420, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479420, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8479420_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4945 _apply_intervals: intervals per_game count=18 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=9 team_for_game=BUF _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=8 team_for_game=BUF _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020132 df_game_rows=265 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=13 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020186 df_game_rows=288 _apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=9 team_for_game=BUF _apply_intervals: game 2025020203 df_game_rows=243 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=12 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=12 team_for_game=BUF _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020267 df_game_rows=272 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=12 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=11 team_for_game=BUF _apply_intervals: game 2025020287 df_game_rows=281 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=11 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=10 team_for_game=BUF _apply_intervals: game 2025020366 df_game_rows=226 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=10 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 771 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482623, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [21 7 8 10 29 6 15 68 19 12 17 22 20 5 30 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482623, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482623, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8482623_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1350 _apply_intervals: intervals per_game count=5 _apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025010076 df_game_rows=250 _apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=12 team_for_game=BUF _apply_intervals: game 2025010085 df_game_rows=276 _apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020009 df_game_rows=298 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 228 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480064, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480064, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480064, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8480064_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4268 _apply_intervals: intervals per_game count=15 _apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025010085 df_game_rows=276 _apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020009 df_game_rows=298 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020267 df_game_rows=272 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=13 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=13 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 Filtered season dataframe to 674 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480196, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 12 68 22 16 1 30 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480196, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480196, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8480196_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6890 _apply_intervals: intervals per_game count=25 _apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025010076 df_game_rows=250 _apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020009 df_game_rows=298 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=26 team_for_game=BUF _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=25 team_for_game=BUF _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020109 df_game_rows=293 _apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=27 team_for_game=BUF _apply_intervals: game 2025020123 df_game_rows=278 _apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020132 df_game_rows=265 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020186 df_game_rows=288 _apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020203 df_game_rows=243 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=28 team_for_game=BUF _apply_intervals: game 2025020287 df_game_rows=281 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=26 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020366 df_game_rows=226 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=25 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=25 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 1922 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480839, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15 68 19 22 20 16 12 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480839, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480839, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8480839_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5861 _apply_intervals: intervals per_game count=21 _apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025010076 df_game_rows=250 _apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025010085 df_game_rows=276 _apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020009 df_game_rows=298 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=8 team_for_game=BUF _apply_intervals: game 2025020109 df_game_rows=293 _apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020123 df_game_rows=278 _apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020132 df_game_rows=265 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=12 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020186 df_game_rows=288 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020366 df_game_rows=226 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 932 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475722, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15 16 12 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475722, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475722, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8475722_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 3020 _apply_intervals: intervals per_game count=11 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020267 df_game_rows=272 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020287 df_game_rows=281 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 Filtered season dataframe to 638 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478413, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 6 19 12 68 21 17 22 20 16 1 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478413, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478413, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8478413_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2723 _apply_intervals: intervals per_game count=10 _apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=13 team_for_game=BUF _apply_intervals: game 2025020186 df_game_rows=288 _apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020203 df_game_rows=243 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020267 df_game_rows=272 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020287 df_game_rows=281 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 Filtered season dataframe to 494 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482765, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 15 68 19 12 21 17 22 20 16] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482765, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482765, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8482765_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4747 _apply_intervals: intervals per_game count=17 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=10 team_for_game=BUF _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=12 team_for_game=BUF _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020109 df_game_rows=293 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020267 df_game_rows=272 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020366 df_game_rows=226 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 Filtered season dataframe to 830 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482896, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 6 21 8 17 19 12 68 22 20 16 5 1 30] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482896, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482896, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8482896_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8036 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025010076 df_game_rows=250 _apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025010085 df_game_rows=276 _apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020009 df_game_rows=298 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020109 df_game_rows=293 _apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020123 df_game_rows=278 _apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020132 df_game_rows=265 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020186 df_game_rows=288 _apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020203 df_game_rows=243 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020267 df_game_rows=272 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020287 df_game_rows=281 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020366 df_game_rows=226 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 1515 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482659, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15 68 19 12 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482659, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482659, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8482659_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8036 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025010076 df_game_rows=250 _apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025010085 df_game_rows=276 _apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020009 df_game_rows=298 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020109 df_game_rows=293 _apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=25 team_for_game=BUF _apply_intervals: game 2025020123 df_game_rows=278 _apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020132 df_game_rows=265 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020186 df_game_rows=288 _apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020203 df_game_rows=243 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=25 team_for_game=BUF _apply_intervals: game 2025020267 df_game_rows=272 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020287 df_game_rows=281 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020366 df_game_rows=226 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 1810 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479982, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15 68 19 12 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479982, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479982, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8479982_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7212 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=25 team_for_game=BUF _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=26 team_for_game=BUF _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020109 df_game_rows=293 _apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020123 df_game_rows=278 _apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020132 df_game_rows=265 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020186 df_game_rows=288 _apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020203 df_game_rows=243 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=25 team_for_game=BUF _apply_intervals: game 2025020267 df_game_rows=272 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=26 team_for_game=BUF _apply_intervals: game 2025020287 df_game_rows=281 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=25 team_for_game=BUF _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020366 df_game_rows=226 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 1767 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482671, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 6 21 8 17 10 29 15 68 19 12 22 20 16 5 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482671, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482671, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8482671_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7743 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025010076 df_game_rows=250 _apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025010085 df_game_rows=276 _apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020009 df_game_rows=298 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020123 df_game_rows=278 _apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020132 df_game_rows=265 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020186 df_game_rows=288 _apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020203 df_game_rows=243 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020267 df_game_rows=272 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=13 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020287 df_game_rows=281 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=13 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=11 team_for_game=BUF _apply_intervals: game 2025020366 df_game_rows=226 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=11 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 1487 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481522, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 10 29 15 68 19 12 17 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481522, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481522, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8481522_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7786 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025010085 df_game_rows=276 _apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=26 team_for_game=BUF _apply_intervals: game 2025020009 df_game_rows=298 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=27 team_for_game=BUF _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020109 df_game_rows=293 _apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020123 df_game_rows=278 _apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020132 df_game_rows=265 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020186 df_game_rows=288 _apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020203 df_game_rows=243 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=25 team_for_game=BUF _apply_intervals: game 2025020267 df_game_rows=272 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020287 df_game_rows=281 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=26 team_for_game=BUF _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020366 df_game_rows=226 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 1963 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481524, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15 68 19 12 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481524, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481524, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8481524_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2745 _apply_intervals: intervals per_game count=10 _apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=13 team_for_game=BUF _apply_intervals: game 2025010076 df_game_rows=250 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020186 df_game_rows=288 _apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020203 df_game_rows=243 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020267 df_game_rows=272 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020287 df_game_rows=281 Filtered season dataframe to 615 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480891, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 5 29 6 15 68 19 12 21 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480891, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480891, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8480891_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8036 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025010076 df_game_rows=250 _apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025010085 df_game_rows=276 _apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020009 df_game_rows=298 _apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020024 df_game_rows=291 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020109 df_game_rows=293 _apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020123 df_game_rows=278 _apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=15 team_for_game=BUF _apply_intervals: game 2025020132 df_game_rows=265 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=19 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=23 team_for_game=BUF _apply_intervals: game 2025020186 df_game_rows=288 _apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020203 df_game_rows=243 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020267 df_game_rows=272 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=24 team_for_game=BUF _apply_intervals: game 2025020287 df_game_rows=281 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=20 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020366 df_game_rows=226 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=21 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 1552 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477949, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15 68 19 12 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477949, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477949, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8477949_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6583 _apply_intervals: intervals per_game count=24 _apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=9 team_for_game=BUF _apply_intervals: game 2025010076 df_game_rows=250 _apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=10 team_for_game=BUF _apply_intervals: game 2025010085 df_game_rows=276 _apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=10 team_for_game=BUF _apply_intervals: game 2025020009 df_game_rows=298 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=13 team_for_game=BUF _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020109 df_game_rows=293 _apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020123 df_game_rows=278 _apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=18 team_for_game=BUF _apply_intervals: game 2025020132 df_game_rows=265 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=22 team_for_game=BUF _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=12 team_for_game=BUF _apply_intervals: game 2025020167 df_game_rows=300 _apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020186 df_game_rows=288 _apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=12 team_for_game=BUF _apply_intervals: game 2025020203 df_game_rows=243 _apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=12 team_for_game=BUF _apply_intervals: game 2025020219 df_game_rows=229 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=12 team_for_game=BUF _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=12 team_for_game=BUF _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020287 df_game_rows=281 _apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020302 df_game_rows=281 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=16 team_for_game=BUF _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=12 team_for_game=BUF _apply_intervals: game 2025020366 df_game_rows=226 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=17 team_for_game=BUF _apply_intervals: game 2025020399 df_game_rows=271 _apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=14 team_for_game=BUF _apply_intervals: game 2025020408 df_game_rows=239 _apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=12 team_for_game=BUF _apply_intervals: game 2025020423 df_game_rows=287 Filtered season dataframe to 1114 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479359, 'team': 'BUF'} team='BUF' DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 21 17 10 29 6 15 68 19 12 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479359, 'team': 'BUF'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479359, 'team': 'BUF'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/BUF/8479359_map.png players: Saved stats to analysis/players/20252026/BUF/player_stats.csv players: Scatter plot includes 25 players (min_games=5) players: Saved scatter plot to analysis/players/20252026/BUF/player_scatter.png players: Analysis complete. Processing CAR (Plotting)... Generating maps for 2 players (skipped 23 up-to-date). players: Starting analysis. Scope=season, Team=CAR, Condition={'game_state': ['5v5'], 'is_net_empty': [0]} DEBUG: analyze.players called INFO:root:Loaded cached shifts for game 2025010091 from data/20252026/shifts/shifts_2025010091.pkl INFO:root:Loaded cached shifts for game 2025020055 from data/20252026/shifts/shifts_2025020055.pkl INFO:root:Loaded cached shifts for game 2025020086 from data/20252026/shifts/shifts_2025020086.pkl INFO:root:Loaded cached shifts for game 2025020097 from data/20252026/shifts/shifts_2025020097.pkl INFO:root:Loaded cached shifts for game 2025020121 from data/20252026/shifts/shifts_2025020121.pkl INFO:root:Loaded cached shifts for game 2025020138 from data/20252026/shifts/shifts_2025020138.pkl INFO:root:Loaded cached shifts for game 2025020171 from data/20252026/shifts/shifts_2025020171.pkl INFO:root:Loaded cached shifts for game 2025020206 from data/20252026/shifts/shifts_2025020206.pkl INFO:root:Loaded cached shifts for game 2025020222 from data/20252026/shifts/shifts_2025020222.pkl INFO:root:Loaded cached shifts for game 2025020246 from data/20252026/shifts/shifts_2025020246.pkl INFO:root:Loaded cached shifts for game 2025020259 from data/20252026/shifts/shifts_2025020259.pkl INFO:root:Loaded cached shifts for game 2025020279 from data/20252026/shifts/shifts_2025020279.pkl INFO:root:Loaded cached shifts for game 2025020289 from data/20252026/shifts/shifts_2025020289.pkl INFO:root:Loaded cached shifts for game 2025020317 from data/20252026/shifts/shifts_2025020317.pkl INFO:root:Loaded cached shifts for game 2025020333 from data/20252026/shifts/shifts_2025020333.pkl INFO:root:Loaded cached shifts for game 2025020431 from data/20252026/shifts/shifts_2025020431.pkl players: Ensuring xG predictions... players: Found 28 players for team CAR players: Loading league baseline... players: Using baseline path: analysis/league/20252026/5v5 league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy players: Analyzing 28 players... xgs_map: using provided DataFrame (in-memory) -> rows= 6063 _apply_intervals: intervals per_game count=21 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=25 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=30 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020246 df_game_rows=284 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020333 df_game_rows=273 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=7 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 1174 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476422, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [12 18 28 54 21 25 2 6 3 30 7 10 15 23 22 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476422, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476422, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025020014 from data/20252026/shifts/shifts_2025020014.pkl INFO:root:Loaded cached shifts for game 2025020030 from data/20252026/shifts/shifts_2025020030.pkl INFO:root:Loaded cached shifts for game 2025020155 from data/20252026/shifts/shifts_2025020155.pkl INFO:root:Loaded cached shifts for game 2025020368 from data/20252026/shifts/shifts_2025020368.pkl INFO:root:Loaded cached shifts for game 2025020387 from data/20252026/shifts/shifts_2025020387.pkl INFO:root:Loaded cached shifts for game 2025020404 from data/20252026/shifts/shifts_2025020404.pkl Saved plot to analysis/players/20252026/CAR/8476422_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7832 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020155 df_game_rows=299 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020246 df_game_rows=284 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020333 df_game_rows=273 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 _apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020387 df_game_rows=279 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 1461 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482702, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [18 12 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482702, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482702, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8482702_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7832 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020155 df_game_rows=299 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=12 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020246 df_game_rows=284 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020333 df_game_rows=273 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 _apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020387 df_game_rows=279 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 1384 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475791, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475791, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475791, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8475791_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5443 _apply_intervals: intervals per_game count=19 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=12 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020246 df_game_rows=284 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020333 df_game_rows=273 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 _apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020387 df_game_rows=279 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 941 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477478, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 7 10 23 22 6 30 52 3 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477478, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477478, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8477478_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7832 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020155 df_game_rows=299 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020246 df_game_rows=284 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=12 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=2 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020333 df_game_rows=273 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 _apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020387 df_game_rows=279 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 1448 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482093, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482093, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482093, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8482093_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5529 _apply_intervals: intervals per_game count=19 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=26 team_for_game=CAR _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=25 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=26 team_for_game=CAR _apply_intervals: game 2025020246 df_game_rows=284 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=27 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=25 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=25 team_for_game=CAR _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020333 df_game_rows=273 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=26 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 _apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020387 df_game_rows=279 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=26 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 Filtered season dataframe to 1424 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480817, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [12 1 4 28 54 30 7 10 15 23 22 6 52 3 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480817, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480817, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8480817_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7559 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=27 team_for_game=CAR _apply_intervals: game 2025020155 df_game_rows=299 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=26 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=25 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=25 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025020246 df_game_rows=284 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 _apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020387 df_game_rows=279 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 1835 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482100, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482100, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482100, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8482100_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6961 _apply_intervals: intervals per_game count=24 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=12 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020155 df_game_rows=299 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=12 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020246 df_game_rows=284 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020333 df_game_rows=273 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 1304 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473533, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473533, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473533, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8473533_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7832 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=11 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020155 df_game_rows=299 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020246 df_game_rows=284 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020333 df_game_rows=273 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 _apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020387 df_game_rows=279 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 1503 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480830, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [18 12 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480830, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480830, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8480830_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4210 _apply_intervals: intervals per_game count=14 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=12 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=11 team_for_game=CAR _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020155 df_game_rows=299 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020246 df_game_rows=284 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=12 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=11 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 Filtered season dataframe to 635 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480829, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [ 1 12 4 21 25 54 2 6 3 30 7 10 15 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480829, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480829, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8480829_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4544 _apply_intervals: intervals per_game count=16 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=11 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=11 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 _apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020387 df_game_rows=279 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 702 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476873, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [12 18 28 25 2 6 3 30 22 7 52 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476873, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476873, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8476873_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2587 _apply_intervals: intervals per_game count=9 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=31 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=9 team_for_game=CAR _apply_intervals: game 2025020246 df_game_rows=284 Filtered season dataframe to 515 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484428, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [12 18 54 21 25 2 6 3 7 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484428, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484428, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8484428_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7832 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=27 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=28 team_for_game=CAR _apply_intervals: game 2025020155 df_game_rows=299 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=25 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=25 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=29 team_for_game=CAR _apply_intervals: game 2025020246 df_game_rows=284 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=31 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=27 team_for_game=CAR _apply_intervals: game 2025020333 df_game_rows=273 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=27 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 _apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025020387 df_game_rows=279 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=26 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 2021 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480336, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480336, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480336, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8480336_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7832 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=12 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020155 df_game_rows=299 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020246 df_game_rows=284 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020333 df_game_rows=273 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 _apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020387 df_game_rows=279 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 1544 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478427, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478427, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478427, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8478427_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7250 _apply_intervals: intervals per_game count=25 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020155 df_game_rows=299 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020246 df_game_rows=284 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 _apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020387 df_game_rows=279 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 1350 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482809, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [18 12 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482809, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482809, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8482809_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5808 _apply_intervals: intervals per_game count=20 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=25 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020155 df_game_rows=299 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=26 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020246 df_game_rows=284 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=27 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=25 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020333 df_game_rows=273 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 _apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020387 df_game_rows=279 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 1356 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482911, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [21 12 25 54 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482911, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482911, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8482911_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5183 _apply_intervals: intervals per_game count=18 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=9 team_for_game=CAR _apply_intervals: game 2025020155 df_game_rows=299 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=31 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=26 team_for_game=CAR _apply_intervals: game 2025020333 df_game_rows=273 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=25 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 _apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=25 team_for_game=CAR _apply_intervals: game 2025020387 df_game_rows=279 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 1199 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476906, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 15 23 22 6 30 52 7 3 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476906, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476906, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8476906_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5792 _apply_intervals: intervals per_game count=20 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=25 team_for_game=CAR _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=26 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=27 team_for_game=CAR _apply_intervals: game 2025020155 df_game_rows=299 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=26 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=5 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=23 team_for_game=CAR _apply_intervals: game 2025020333 df_game_rows=273 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 _apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020387 df_game_rows=279 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=24 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=21 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 1389 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478970, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 52 7 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478970, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478970, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8478970_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2303 _apply_intervals: intervals per_game count=8 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=8 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=7 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=4 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=5 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=8 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=8 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=7 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 Filtered season dataframe to 1496 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475883, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [ 4 12 54 6 30 15 7 3] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475883, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475883, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8475883_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1758 _apply_intervals: intervals per_game count=6 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020155 df_game_rows=299 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=11 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 Filtered season dataframe to 298 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484203, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [12 25 54 2 6 3 30] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484203, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484203, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8484203_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7832 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020155 df_game_rows=299 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020246 df_game_rows=284 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=12 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=12 team_for_game=CAR _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020333 df_game_rows=273 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 _apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020387 df_game_rows=279 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 1360 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477940, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477940, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477940, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8477940_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7832 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=12 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020155 df_game_rows=299 _apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020171 df_game_rows=321 _apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020181 df_game_rows=241 _apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020206 df_game_rows=268 _apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020222 df_game_rows=304 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=22 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020246 df_game_rows=284 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=20 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=19 team_for_game=CAR _apply_intervals: game 2025020333 df_game_rows=273 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 _apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020387 df_game_rows=279 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=17 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=16 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 1470 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476921, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476921, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476921, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8476921_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5517 _apply_intervals: intervals per_game count=19 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=10 team_for_game=CAR _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=11 team_for_game=CAR _apply_intervals: game 2025020030 df_game_rows=315 _apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020055 df_game_rows=285 _apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR _apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=11 team_for_game=CAR _apply_intervals: game 2025020097 df_game_rows=264 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=10 team_for_game=CAR _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020238 df_game_rows=307 _apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020259 df_game_rows=296 _apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020279 df_game_rows=288 _apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=10 team_for_game=CAR _apply_intervals: game 2025020289 df_game_rows=282 _apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020301 df_game_rows=309 _apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020317 df_game_rows=274 _apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020347 df_game_rows=284 _apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=18 team_for_game=CAR _apply_intervals: game 2025020368 df_game_rows=308 _apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=15 team_for_game=CAR _apply_intervals: game 2025020387 df_game_rows=279 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=14 team_for_game=CAR _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=13 team_for_game=CAR _apply_intervals: game 2025020431 df_game_rows=272 Filtered season dataframe to 800 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480762, 'team': 'CAR'} team='CAR' DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 7 15 23 22 6 30 3 52 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480762, 'team': 'CAR'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480762, 'team': 'CAR'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CAR/8480762_map.png players: Saved stats to analysis/players/20252026/CAR/player_stats.csv players: Scatter plot includes 23 players (min_games=5) players: Saved scatter plot to analysis/players/20252026/CAR/player_scatter.png players: Analysis complete. Processing CBJ (Plotting)... Generating maps for 3 players (skipped 21 up-to-date). players: Starting analysis. Scope=season, Team=CBJ, Condition={'game_state': ['5v5'], 'is_net_empty': [0]} DEBUG: analyze.players called INFO:root:Loaded cached shifts for game 2025010093 from data/20252026/shifts/shifts_2025010093.pkl INFO:root:Loaded cached shifts for game 2025020045 from data/20252026/shifts/shifts_2025020045.pkl INFO:root:Loaded cached shifts for game 2025020067 from data/20252026/shifts/shifts_2025020067.pkl INFO:root:Loaded cached shifts for game 2025020082 from data/20252026/shifts/shifts_2025020082.pkl INFO:root:Loaded cached shifts for game 2025020106 from data/20252026/shifts/shifts_2025020106.pkl INFO:root:Loaded cached shifts for game 2025020166 from data/20252026/shifts/shifts_2025020166.pkl INFO:root:Loaded cached shifts for game 2025020189 from data/20252026/shifts/shifts_2025020189.pkl INFO:root:Loaded cached shifts for game 2025020215 from data/20252026/shifts/shifts_2025020215.pkl INFO:root:Loaded cached shifts for game 2025020241 from data/20252026/shifts/shifts_2025020241.pkl INFO:root:Loaded cached shifts for game 2025020254 from data/20252026/shifts/shifts_2025020254.pkl INFO:root:Loaded cached shifts for game 2025020274 from data/20252026/shifts/shifts_2025020274.pkl INFO:root:Loaded cached shifts for game 2025020290 from data/20252026/shifts/shifts_2025020290.pkl INFO:root:Loaded cached shifts for game 2025020305 from data/20252026/shifts/shifts_2025020305.pkl INFO:root:Loaded cached shifts for game 2025020311 from data/20252026/shifts/shifts_2025020311.pkl INFO:root:Loaded cached shifts for game 2025020319 from data/20252026/shifts/shifts_2025020319.pkl INFO:root:Loaded cached shifts for game 2025020335 from data/20252026/shifts/shifts_2025020335.pkl INFO:root:Loaded cached shifts for game 2025020356 from data/20252026/shifts/shifts_2025020356.pkl players: Ensuring xG predictions... players: Found 27 players for team CBJ players: Loading league baseline... players: Using baseline path: analysis/league/20252026/5v5 league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy players: Analyzing 27 players... xgs_map: using provided DataFrame (in-memory) -> rows= 4950 _apply_intervals: intervals per_game count=18 _apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025010093 df_game_rows=267 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=8 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020166 df_game_rows=286 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=12 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=8 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=12 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=11 team_for_game=CBJ _apply_intervals: game 2025020290 df_game_rows=322 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=12 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020335 df_game_rows=296 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 Filtered season dataframe to 787 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481161, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [15 29 1 25 7 10 19 20 23 22 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481161, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481161, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025020016 from data/20252026/shifts/shifts_2025020016.pkl INFO:root:Loaded cached shifts for game 2025020134 from data/20252026/shifts/shifts_2025020134.pkl INFO:root:Loaded cached shifts for game 2025020195 from data/20252026/shifts/shifts_2025020195.pkl INFO:root:Loaded cached shifts for game 2025020264 from data/20252026/shifts/shifts_2025020264.pkl INFO:root:Loaded cached shifts for game 2025020369 from data/20252026/shifts/shifts_2025020369.pkl INFO:root:Loaded cached shifts for game 2025020388 from data/20252026/shifts/shifts_2025020388.pkl INFO:root:Loaded cached shifts for game 2025020406 from data/20252026/shifts/shifts_2025020406.pkl INFO:root:Loaded cached shifts for game 2025020432 from data/20252026/shifts/shifts_2025020432.pkl Saved plot to analysis/players/20252026/CBJ/8481161_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7219 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025010093 df_game_rows=267 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020134 df_game_rows=296 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020166 df_game_rows=286 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020195 df_game_rows=263 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=24 team_for_game=CBJ _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020264 df_game_rows=274 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020290 df_game_rows=322 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020335 df_game_rows=296 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 _apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020369 df_game_rows=280 _apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020388 df_game_rows=264 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020432 df_game_rows=294 Filtered season dataframe to 1561 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479371, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [15 29 18 1 25 5 7 10 19 2 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479371, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479371, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025020033 from data/20252026/shifts/shifts_2025020033.pkl INFO:root:Loaded cached shifts for game 2025020125 from data/20252026/shifts/shifts_2025020125.pkl Saved plot to analysis/players/20252026/CBJ/8479371_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4791 _apply_intervals: intervals per_game count=17 _apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025010093 df_game_rows=267 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=10 team_for_game=CBJ _apply_intervals: game 2025020033 df_game_rows=319 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020125 df_game_rows=266 _apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020134 df_game_rows=296 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020166 df_game_rows=286 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020195 df_game_rows=263 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=7 team_for_game=CBJ _apply_intervals: game 2025020264 df_game_rows=274 Filtered season dataframe to 898 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476432, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 23 22 55] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476432, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476432, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8476432_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7525 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025010093 df_game_rows=267 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020033 df_game_rows=319 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020125 df_game_rows=266 _apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020134 df_game_rows=296 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020166 df_game_rows=286 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020195 df_game_rows=263 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020264 df_game_rows=274 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020290 df_game_rows=322 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=22 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020335 df_game_rows=296 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 _apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020369 df_game_rows=280 _apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020388 df_game_rows=264 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020432 df_game_rows=294 Filtered season dataframe to 1567 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482705, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 23 55 22 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482705, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482705, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8482705_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7517 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=22 team_for_game=CBJ _apply_intervals: game 2025010093 df_game_rows=267 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020033 df_game_rows=319 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020125 df_game_rows=266 _apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020134 df_game_rows=296 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=22 team_for_game=CBJ _apply_intervals: game 2025020166 df_game_rows=286 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020195 df_game_rows=263 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=23 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020264 df_game_rows=274 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=25 team_for_game=CBJ _apply_intervals: game 2025020290 df_game_rows=322 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=25 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=22 team_for_game=CBJ _apply_intervals: game 2025020335 df_game_rows=296 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=24 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 _apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020369 df_game_rows=280 _apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020388 df_game_rows=264 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020432 df_game_rows=294 Filtered season dataframe to 1848 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483485, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483485, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483485, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8483485_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7804 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025010093 df_game_rows=267 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=24 team_for_game=CBJ _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020033 df_game_rows=319 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=25 team_for_game=CBJ _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020125 df_game_rows=266 _apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020134 df_game_rows=296 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=26 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020166 df_game_rows=286 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=24 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=23 team_for_game=CBJ _apply_intervals: game 2025020195 df_game_rows=263 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=23 team_for_game=CBJ _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=27 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=25 team_for_game=CBJ _apply_intervals: game 2025020264 df_game_rows=274 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=26 team_for_game=CBJ _apply_intervals: game 2025020290 df_game_rows=322 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=26 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=24 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=27 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=23 team_for_game=CBJ _apply_intervals: game 2025020335 df_game_rows=296 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=23 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 _apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=26 team_for_game=CBJ _apply_intervals: game 2025020369 df_game_rows=280 _apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=24 team_for_game=CBJ _apply_intervals: game 2025020388 df_game_rows=264 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=22 team_for_game=CBJ _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=23 team_for_game=CBJ _apply_intervals: game 2025020432 df_game_rows=294 Filtered season dataframe to 2275 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478500, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478500, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478500, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8478500_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6946 _apply_intervals: intervals per_game count=25 _apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025010093 df_game_rows=267 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020033 df_game_rows=319 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=12 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020125 df_game_rows=266 _apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020134 df_game_rows=296 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020166 df_game_rows=286 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020195 df_game_rows=263 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020264 df_game_rows=274 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020290 df_game_rows=322 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 _apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020369 df_game_rows=280 _apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020388 df_game_rows=264 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020432 df_game_rows=294 Filtered season dataframe to 1183 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480806, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480806, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480806, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8480806_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6085 _apply_intervals: intervals per_game count=22 _apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025010093 df_game_rows=267 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020125 df_game_rows=266 _apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020134 df_game_rows=296 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020166 df_game_rows=286 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=11 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=12 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020264 df_game_rows=274 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=9 team_for_game=CBJ _apply_intervals: game 2025020290 df_game_rows=322 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=12 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=12 team_for_game=CBJ _apply_intervals: game 2025020335 df_game_rows=296 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=22 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 _apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020369 df_game_rows=280 _apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020388 df_game_rows=264 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=12 team_for_game=CBJ _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=12 team_for_game=CBJ _apply_intervals: game 2025020432 df_game_rows=294 Filtered season dataframe to 840 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482475, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 15 25 5 7 10 19 23 22 55 3 8 17 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482475, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482475, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8482475_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7804 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025010093 df_game_rows=267 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020033 df_game_rows=319 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020125 df_game_rows=266 _apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020134 df_game_rows=296 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020166 df_game_rows=286 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020195 df_game_rows=263 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020264 df_game_rows=274 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020290 df_game_rows=322 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020335 df_game_rows=296 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 _apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020369 df_game_rows=280 _apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020388 df_game_rows=264 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020432 df_game_rows=294 Filtered season dataframe to 1499 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481716, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481716, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481716, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8481716_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6677 _apply_intervals: intervals per_game count=24 _apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025010093 df_game_rows=267 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020033 df_game_rows=319 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020125 df_game_rows=266 _apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020134 df_game_rows=296 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020166 df_game_rows=286 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020195 df_game_rows=263 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=9 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020264 df_game_rows=274 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020290 df_game_rows=322 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020335 df_game_rows=296 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=6 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 Filtered season dataframe to 1219 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479671, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479671, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479671, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8479671_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7537 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020033 df_game_rows=319 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020125 df_game_rows=266 _apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020134 df_game_rows=296 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020166 df_game_rows=286 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020195 df_game_rows=263 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020264 df_game_rows=274 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020290 df_game_rows=322 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020335 df_game_rows=296 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 _apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020369 df_game_rows=280 _apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020388 df_game_rows=264 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020432 df_game_rows=294 Filtered season dataframe to 1499 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477497, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 18 30 1 25 15 5 7 10 19 2 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477497, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477497, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8477497_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1659 _apply_intervals: intervals per_game count=6 _apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020335 df_game_rows=296 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 _apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020369 df_game_rows=280 _apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020388 df_game_rows=264 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020432 df_game_rows=294 Filtered season dataframe to 246 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476867, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 17 15 10 5 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476867, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476867, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8476867_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7804 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025010093 df_game_rows=267 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020033 df_game_rows=319 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020125 df_game_rows=266 _apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020134 df_game_rows=296 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020166 df_game_rows=286 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020195 df_game_rows=263 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020264 df_game_rows=274 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020290 df_game_rows=322 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020335 df_game_rows=296 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=23 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 _apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020369 df_game_rows=280 _apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020388 df_game_rows=264 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020432 df_game_rows=294 Filtered season dataframe to 1725 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484166, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484166, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484166, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8484166_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4700 _apply_intervals: intervals per_game count=17 _apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025010093 df_game_rows=267 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=12 team_for_game=CBJ _apply_intervals: game 2025020033 df_game_rows=319 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=11 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020125 df_game_rows=266 _apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020134 df_game_rows=296 _apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020195 df_game_rows=263 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=11 team_for_game=CBJ _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 _apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020369 df_game_rows=280 _apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020388 df_game_rows=264 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=10 team_for_game=CBJ _apply_intervals: game 2025020406 df_game_rows=289 Filtered season dataframe to 611 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479944, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 5 2 20 22 8 52 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479944, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479944, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8479944_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7541 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025010093 df_game_rows=267 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=11 team_for_game=CBJ _apply_intervals: game 2025020033 df_game_rows=319 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020125 df_game_rows=266 _apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020134 df_game_rows=296 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020166 df_game_rows=286 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020264 df_game_rows=274 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020290 df_game_rows=322 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=23 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020335 df_game_rows=296 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 _apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020369 df_game_rows=280 _apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020388 df_game_rows=264 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020432 df_game_rows=294 Filtered season dataframe to 1456 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475745, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475745, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475745, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8475745_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7244 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025010093 df_game_rows=267 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020033 df_game_rows=319 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=12 team_for_game=CBJ _apply_intervals: game 2025020125 df_game_rows=266 _apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020134 df_game_rows=296 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=12 team_for_game=CBJ _apply_intervals: game 2025020195 df_game_rows=263 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=12 team_for_game=CBJ _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=11 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020290 df_game_rows=322 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020335 df_game_rows=296 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 _apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020369 df_game_rows=280 _apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020388 df_game_rows=264 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=12 team_for_game=CBJ _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020432 df_game_rows=294 Filtered season dataframe to 1170 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482660, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 19 2 20 23 22 3 8 52 10 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482660, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482660, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8482660_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2226 _apply_intervals: intervals per_game count=8 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=12 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=12 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020264 df_game_rows=274 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=10 team_for_game=CBJ _apply_intervals: game 2025020290 df_game_rows=322 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=12 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=10 team_for_game=CBJ _apply_intervals: game 2025020432 df_game_rows=294 Filtered season dataframe to 293 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483432, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [23 29 22 55 3 52 10 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483432, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483432, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8483432_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6125 _apply_intervals: intervals per_game count=22 _apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025010093 df_game_rows=267 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020033 df_game_rows=319 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=3 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020166 df_game_rows=286 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=13 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020195 df_game_rows=263 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020264 df_game_rows=274 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020290 df_game_rows=322 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=15 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020335 df_game_rows=296 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 _apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020369 df_game_rows=280 _apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020388 df_game_rows=264 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020432 df_game_rows=294 Filtered season dataframe to 1217 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477425, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 7 10 19 2 20 23 55 22 3 8 52 17 5] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477425, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477425, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8477425_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7482 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=22 team_for_game=CBJ _apply_intervals: game 2025010093 df_game_rows=267 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=22 team_for_game=CBJ _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020033 df_game_rows=319 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=24 team_for_game=CBJ _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020125 df_game_rows=266 _apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020134 df_game_rows=296 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=25 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020166 df_game_rows=286 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=22 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=24 team_for_game=CBJ _apply_intervals: game 2025020195 df_game_rows=263 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=23 team_for_game=CBJ _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=23 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020264 df_game_rows=274 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=22 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020335 df_game_rows=296 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=22 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 _apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020369 df_game_rows=280 _apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020388 df_game_rows=264 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020432 df_game_rows=294 Filtered season dataframe to 1925 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476923, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 23 22 55 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476923, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476923, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8476923_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7537 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=26 team_for_game=CBJ _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=23 team_for_game=CBJ _apply_intervals: game 2025020033 df_game_rows=319 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020125 df_game_rows=266 _apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020134 df_game_rows=296 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=25 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020166 df_game_rows=286 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=22 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=22 team_for_game=CBJ _apply_intervals: game 2025020195 df_game_rows=263 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=25 team_for_game=CBJ _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=25 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020264 df_game_rows=274 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=26 team_for_game=CBJ _apply_intervals: game 2025020290 df_game_rows=322 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=26 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=21 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=24 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=23 team_for_game=CBJ _apply_intervals: game 2025020335 df_game_rows=296 _apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020356 df_game_rows=236 _apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=25 team_for_game=CBJ _apply_intervals: game 2025020369 df_game_rows=280 _apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=24 team_for_game=CBJ _apply_intervals: game 2025020388 df_game_rows=264 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=22 team_for_game=CBJ _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=23 team_for_game=CBJ _apply_intervals: game 2025020432 df_game_rows=294 Filtered season dataframe to 2351 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478460, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 18 30 1 25 15 5 7 10 19 2 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478460, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478460, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8478460_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6735 _apply_intervals: intervals per_game count=24 _apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025010093 df_game_rows=267 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020033 df_game_rows=319 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020125 df_game_rows=266 _apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020134 df_game_rows=296 _apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020152 df_game_rows=284 _apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=14 team_for_game=CBJ _apply_intervals: game 2025020166 df_game_rows=286 _apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020189 df_game_rows=269 _apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020195 df_game_rows=263 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020241 df_game_rows=265 _apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020254 df_game_rows=279 _apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020264 df_game_rows=274 _apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020274 df_game_rows=251 _apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=19 team_for_game=CBJ _apply_intervals: game 2025020290 df_game_rows=322 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=16 team_for_game=CBJ _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=17 team_for_game=CBJ _apply_intervals: game 2025020311 df_game_rows=252 _apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020319 df_game_rows=289 _apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=18 team_for_game=CBJ _apply_intervals: game 2025020335 df_game_rows=296 _apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=20 team_for_game=CBJ _apply_intervals: game 2025020432 df_game_rows=294 Filtered season dataframe to 1464 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480893, 'team': 'CBJ'} team='CBJ' DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480893, 'team': 'CBJ'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480893, 'team': 'CBJ'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CBJ/8480893_map.png players: Saved stats to analysis/players/20252026/CBJ/player_stats.csv players: Scatter plot includes 21 players (min_games=5) players: Saved scatter plot to analysis/players/20252026/CBJ/player_scatter.png players: Analysis complete. Processing CGY (Plotting)... Generating maps for 1 players (skipped 24 up-to-date). players: Starting analysis. Scope=season, Team=CGY, Condition={'game_state': ['5v5'], 'is_net_empty': [0]} DEBUG: analyze.players called INFO:root:Loaded cached shifts for game 2025010077 from data/20252026/shifts/shifts_2025010077.pkl INFO:root:Loaded cached shifts for game 2025020006 from data/20252026/shifts/shifts_2025020006.pkl INFO:root:Loaded cached shifts for game 2025020019 from data/20252026/shifts/shifts_2025020019.pkl INFO:root:Loaded cached shifts for game 2025020023 from data/20252026/shifts/shifts_2025020023.pkl INFO:root:Loaded cached shifts for game 2025020060 from data/20252026/shifts/shifts_2025020060.pkl INFO:root:Loaded cached shifts for game 2025020183 from data/20252026/shifts/shifts_2025020183.pkl INFO:root:Loaded cached shifts for game 2025020196 from data/20252026/shifts/shifts_2025020196.pkl INFO:root:Loaded cached shifts for game 2025020229 from data/20252026/shifts/shifts_2025020229.pkl INFO:root:Loaded cached shifts for game 2025020249 from data/20252026/shifts/shifts_2025020249.pkl INFO:root:Loaded cached shifts for game 2025020260 from data/20252026/shifts/shifts_2025020260.pkl INFO:root:Loaded cached shifts for game 2025020276 from data/20252026/shifts/shifts_2025020276.pkl INFO:root:Loaded cached shifts for game 2025020294 from data/20252026/shifts/shifts_2025020294.pkl INFO:root:Loaded cached shifts for game 2025020312 from data/20252026/shifts/shifts_2025020312.pkl INFO:root:Loaded cached shifts for game 2025020345 from data/20252026/shifts/shifts_2025020345.pkl INFO:root:Loaded cached shifts for game 2025020352 from data/20252026/shifts/shifts_2025020352.pkl INFO:root:Loaded cached shifts for game 2025020362 from data/20252026/shifts/shifts_2025020362.pkl INFO:root:Loaded cached shifts for game 2025020380 from data/20252026/shifts/shifts_2025020380.pkl INFO:root:Loaded cached shifts for game 2025020416 from data/20252026/shifts/shifts_2025020416.pkl players: Ensuring xG predictions... players: Found 30 players for team CGY players: Loading league baseline... players: Using baseline path: analysis/league/20252026/5v5 league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy players: Analyzing 30 players... xgs_map: using provided DataFrame (in-memory) -> rows= 5633 _apply_intervals: intervals per_game count=20 _apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025010077 df_game_rows=257 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020023 df_game_rows=302 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=10 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020276 df_game_rows=243 _apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=22 team_for_game=CGY _apply_intervals: game 2025020294 df_game_rows=304 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020362 df_game_rows=275 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=11 team_for_game=CGY _apply_intervals: game 2025020416 df_game_rows=281 Filtered season dataframe to 1076 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481167, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 23 22 19 18 4 29 16 30 28 52 7 25 14 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481167, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481167, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025020433 from data/20252026/shifts/shifts_2025020433.pkl Saved plot to analysis/players/20252026/CGY/8481167_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 3305 _apply_intervals: intervals per_game count=7 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=11 team_for_game=CGY _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=11 team_for_game=CGY _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=10 team_for_game=CGY _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=10 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 271 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481556, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 7 25 23 13 12 18 30] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481556, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481556, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025010089 from data/20252026/shifts/shifts_2025010089.pkl INFO:root:Loaded cached shifts for game 2025020053 from data/20252026/shifts/shifts_2025020053.pkl INFO:root:Loaded cached shifts for game 2025020087 from data/20252026/shifts/shifts_2025020087.pkl INFO:root:Loaded cached shifts for game 2025020096 from data/20252026/shifts/shifts_2025020096.pkl INFO:root:Loaded cached shifts for game 2025020110 from data/20252026/shifts/shifts_2025020110.pkl INFO:root:Loaded cached shifts for game 2025020126 from data/20252026/shifts/shifts_2025020126.pkl INFO:root:Loaded cached shifts for game 2025020146 from data/20252026/shifts/shifts_2025020146.pkl INFO:root:Loaded cached shifts for game 2025020168 from data/20252026/shifts/shifts_2025020168.pkl Saved plot to analysis/players/20252026/CGY/8481556_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8190 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=10 team_for_game=CGY _apply_intervals: game 2025020023 df_game_rows=302 _apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020053 df_game_rows=287 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020126 df_game_rows=281 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020168 df_game_rows=300 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=11 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020276 df_game_rows=243 _apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020294 df_game_rows=304 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=8 team_for_game=CGY _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=10 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=11 team_for_game=CGY _apply_intervals: game 2025020362 df_game_rows=275 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=9 team_for_game=CGY _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=8 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 1203 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483609, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 52 22 23 19 54 8 3 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483609, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483609, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025020151 from data/20252026/shifts/shifts_2025020151.pkl Saved plot to analysis/players/20252026/CGY/8483609_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8165 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025010077 df_game_rows=257 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=11 team_for_game=CGY _apply_intervals: game 2025020023 df_game_rows=302 _apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=11 team_for_game=CGY _apply_intervals: game 2025020053 df_game_rows=287 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=11 team_for_game=CGY _apply_intervals: game 2025020126 df_game_rows=281 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020276 df_game_rows=243 _apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020294 df_game_rows=304 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020362 df_game_rows=275 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 1442 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482074, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 4 29 16 30 28 7 25 14 13 12 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482074, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482074, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8482074_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8450 _apply_intervals: intervals per_game count=30 _apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025010077 df_game_rows=257 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020023 df_game_rows=302 _apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020053 df_game_rows=287 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=11 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020168 df_game_rows=300 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020276 df_game_rows=243 _apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020294 df_game_rows=304 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020362 df_game_rows=275 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 1446 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480028, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480028, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480028, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8480028_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8731 _apply_intervals: intervals per_game count=31 _apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025010077 df_game_rows=257 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020023 df_game_rows=302 _apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020053 df_game_rows=287 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020126 df_game_rows=281 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020168 df_game_rows=300 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020276 df_game_rows=243 _apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025020294 df_game_rows=304 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020362 df_game_rows=275 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 1729 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480797, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480797, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480797, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8480797_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2249 _apply_intervals: intervals per_game count=8 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=7 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020053 df_game_rows=287 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=3 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=6 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=5 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=7 team_for_game=CGY _apply_intervals: game 2025020276 df_game_rows=243 _apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=4 team_for_game=CGY _apply_intervals: game 2025020294 df_game_rows=304 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=8 team_for_game=CGY _apply_intervals: game 2025020416 df_game_rows=281 Filtered season dataframe to 1538 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481692, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [22 20 54 4 16 19 28 52 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481692, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481692, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8481692_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 3656 _apply_intervals: intervals per_game count=13 _apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025010077 df_game_rows=257 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020023 df_game_rows=302 _apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020053 df_game_rows=287 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020126 df_game_rows=281 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=6 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 Filtered season dataframe to 609 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484768, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 23 52 19 54 8 3 10 4 16] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484768, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484768, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8484768_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8731 _apply_intervals: intervals per_game count=31 _apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=22 team_for_game=CGY _apply_intervals: game 2025010077 df_game_rows=257 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=28 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025020023 df_game_rows=302 _apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020053 df_game_rows=287 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=28 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=31 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=22 team_for_game=CGY _apply_intervals: game 2025020126 df_game_rows=281 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=33 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=28 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020168 df_game_rows=300 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=30 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=26 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=26 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025020276 df_game_rows=243 _apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=30 team_for_game=CGY _apply_intervals: game 2025020294 df_game_rows=304 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=29 team_for_game=CGY _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=26 team_for_game=CGY _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=26 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020362 df_game_rows=275 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 2374 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477346, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477346, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477346, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8477346_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8731 _apply_intervals: intervals per_game count=31 _apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025010077 df_game_rows=257 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=22 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020023 df_game_rows=302 _apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020053 df_game_rows=287 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=25 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020126 df_game_rows=281 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020168 df_game_rows=300 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020276 df_game_rows=243 _apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=26 team_for_game=CGY _apply_intervals: game 2025020294 df_game_rows=304 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020362 df_game_rows=275 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 1925 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475172, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475172, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475172, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8475172_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8731 _apply_intervals: intervals per_game count=31 _apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025010077 df_game_rows=257 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020023 df_game_rows=302 _apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020053 df_game_rows=287 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=25 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020126 df_game_rows=281 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020168 df_game_rows=300 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=22 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020276 df_game_rows=243 _apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=25 team_for_game=CGY _apply_intervals: game 2025020294 df_game_rows=304 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020362 df_game_rows=275 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=22 team_for_game=CGY _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 1669 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474150, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474150, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474150, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8474150_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6691 _apply_intervals: intervals per_game count=24 _apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025010077 df_game_rows=257 _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=22 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020126 df_game_rows=281 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020168 df_game_rows=300 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=22 team_for_game=CGY _apply_intervals: game 2025020294 df_game_rows=304 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020362 df_game_rows=275 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 1381 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476456, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 23 54 52 8 3 10 9 18 4 29 16 30 19 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476456, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476456, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8476456_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2893 _apply_intervals: intervals per_game count=10 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=9 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=11 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020168 df_game_rows=300 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 Filtered season dataframe to 352 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477993, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [52 20 22 23 8 3 10 9 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477993, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477993, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8477993_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4538 _apply_intervals: intervals per_game count=16 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=26 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=28 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020126 df_game_rows=281 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=30 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020168 df_game_rows=300 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020276 df_game_rows=243 _apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025020294 df_game_rows=304 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=22 team_for_game=CGY _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 1114 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479402, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 52 22 23 54 8 3 10 9 18 28 16 12 30] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479402, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479402, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8479402_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7630 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025010077 df_game_rows=257 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020023 df_game_rows=302 _apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020053 df_game_rows=287 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=11 team_for_game=CGY _apply_intervals: game 2025020126 df_game_rows=281 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020168 df_game_rows=300 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=10 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=10 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020362 df_game_rows=275 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 1341 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481068, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 3 10 9 18 4 29 16 30 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481068, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481068, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8481068_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8474 _apply_intervals: intervals per_game count=30 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=29 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=26 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025020023 df_game_rows=302 _apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020053 df_game_rows=287 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=30 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=25 team_for_game=CGY _apply_intervals: game 2025020126 df_game_rows=281 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=29 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=25 team_for_game=CGY _apply_intervals: game 2025020168 df_game_rows=300 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=32 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=29 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=28 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=26 team_for_game=CGY _apply_intervals: game 2025020276 df_game_rows=243 _apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=33 team_for_game=CGY _apply_intervals: game 2025020294 df_game_rows=304 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=29 team_for_game=CGY _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=25 team_for_game=CGY _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020362 df_game_rows=275 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=34 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=29 team_for_game=CGY _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 2186 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478397, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 52 22 23 19 54 8 3 10 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478397, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478397, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8478397_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4434 _apply_intervals: intervals per_game count=16 _apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020023 df_game_rows=302 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020126 df_game_rows=281 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020168 df_game_rows=300 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020276 df_game_rows=243 Filtered season dataframe to 722 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484180, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [19 20 54 52 8 3 10 9 18 4 29 16 30 28] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484180, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484180, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8484180_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6512 _apply_intervals: intervals per_game count=23 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=10 team_for_game=CGY _apply_intervals: game 2025020053 df_game_rows=287 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020168 df_game_rows=300 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=11 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=11 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=9 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=10 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=11 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=10 team_for_game=CGY _apply_intervals: game 2025020276 df_game_rows=243 _apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020294 df_game_rows=304 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020362 df_game_rows=275 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=8 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 943 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479066, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [52 20 22 23 54 8 3 10 9 18 4 16 30 19 28 14 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479066, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479066, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8479066_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8173 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025010077 df_game_rows=257 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=30 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=28 team_for_game=CGY _apply_intervals: game 2025020023 df_game_rows=302 _apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025020053 df_game_rows=287 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=28 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025020126 df_game_rows=281 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=26 team_for_game=CGY _apply_intervals: game 2025020168 df_game_rows=300 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=30 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=26 team_for_game=CGY _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=25 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020276 df_game_rows=243 _apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=29 team_for_game=CGY _apply_intervals: game 2025020294 df_game_rows=304 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=30 team_for_game=CGY _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=25 team_for_game=CGY _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=32 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=28 team_for_game=CGY _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 2099 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480860, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 9 18 4 29 30 28 16 7 25 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480860, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480860, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8480860_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8731 _apply_intervals: intervals per_game count=31 _apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025010077 df_game_rows=257 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020023 df_game_rows=302 _apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020053 df_game_rows=287 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020126 df_game_rows=281 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=22 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020168 df_game_rows=300 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020276 df_game_rows=243 _apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=26 team_for_game=CGY _apply_intervals: game 2025020294 df_game_rows=304 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020362 df_game_rows=275 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 1728 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476399, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476399, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476399, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8476399_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7598 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025010077 df_game_rows=257 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=28 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=25 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025020023 df_game_rows=302 _apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020053 df_game_rows=287 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=28 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020126 df_game_rows=281 _apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025020146 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=26 team_for_game=CGY _apply_intervals: game 2025020168 df_game_rows=300 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=29 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=29 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=22 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020362 df_game_rows=275 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=22 team_for_game=CGY _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 1701 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477810, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 9 18 4 29 16 30 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477810, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477810, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8477810_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4183 _apply_intervals: intervals per_game count=15 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=30 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=25 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=23 team_for_game=CGY _apply_intervals: game 2025020276 df_game_rows=243 _apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=28 team_for_game=CGY _apply_intervals: game 2025020294 df_game_rows=304 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=27 team_for_game=CGY _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=26 team_for_game=CGY _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=25 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020362 df_game_rows=275 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=28 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=29 team_for_game=CGY _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=24 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 1127 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482165, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [29 20 16 30 19 28 52 7 25 23 14 13 12 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482165, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482165, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8482165_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8450 _apply_intervals: intervals per_game count=30 _apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025010077 df_game_rows=257 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020023 df_game_rows=302 _apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020053 df_game_rows=287 _apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY _apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=12 team_for_game=CGY _apply_intervals: game 2025020087 df_game_rows=268 _apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020096 df_game_rows=279 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020126 df_game_rows=281 _apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=11 team_for_game=CGY _apply_intervals: game 2025020151 df_game_rows=284 _apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020168 df_game_rows=300 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=11 team_for_game=CGY _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=18 team_for_game=CGY _apply_intervals: game 2025020196 df_game_rows=260 _apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020215 df_game_rows=287 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020249 df_game_rows=279 _apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020260 df_game_rows=266 _apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020276 df_game_rows=243 _apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=22 team_for_game=CGY _apply_intervals: game 2025020294 df_game_rows=304 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=20 team_for_game=CGY _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020316 df_game_rows=271 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025020352 df_game_rows=262 _apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020362 df_game_rows=275 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020404 df_game_rows=259 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=13 team_for_game=CGY _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=17 team_for_game=CGY _apply_intervals: game 2025020433 df_game_rows=265 Filtered season dataframe to 1586 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482679, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 10 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482679, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482679, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8482679_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1774 _apply_intervals: intervals per_game count=6 _apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=19 team_for_game=CGY _apply_intervals: game 2025010077 df_game_rows=257 _apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025010089 df_game_rows=319 _apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=21 team_for_game=CGY _apply_intervals: game 2025020006 df_game_rows=325 _apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=16 team_for_game=CGY _apply_intervals: game 2025020019 df_game_rows=284 _apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=14 team_for_game=CGY _apply_intervals: game 2025020023 df_game_rows=302 _apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=15 team_for_game=CGY _apply_intervals: game 2025020053 df_game_rows=287 Filtered season dataframe to 326 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484860, 'team': 'CGY'} team='CGY' DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484860, 'team': 'CGY'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484860, 'team': 'CGY'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CGY/8484860_map.png players: Saved stats to analysis/players/20252026/CGY/player_stats.csv players: Scatter plot includes 24 players (min_games=5) players: Saved scatter plot to analysis/players/20252026/CGY/player_scatter.png players: Analysis complete. Processing CHI (Plotting)... Generating maps for 1 players (skipped 22 up-to-date). players: Starting analysis. Scope=season, Team=CHI, Condition={'game_state': ['5v5'], 'is_net_empty': [0]} DEBUG: analyze.players called INFO:root:Loaded cached shifts for game 2025020001 from data/20252026/shifts/shifts_2025020001.pkl INFO:root:Loaded cached shifts for game 2025020031 from data/20252026/shifts/shifts_2025020031.pkl INFO:root:Loaded cached shifts for game 2025020048 from data/20252026/shifts/shifts_2025020048.pkl INFO:root:Loaded cached shifts for game 2025020059 from data/20252026/shifts/shifts_2025020059.pkl INFO:root:Loaded cached shifts for game 2025020074 from data/20252026/shifts/shifts_2025020074.pkl INFO:root:Loaded cached shifts for game 2025020113 from data/20252026/shifts/shifts_2025020113.pkl INFO:root:Loaded cached shifts for game 2025020144 from data/20252026/shifts/shifts_2025020144.pkl INFO:root:Loaded cached shifts for game 2025020160 from data/20252026/shifts/shifts_2025020160.pkl INFO:root:Loaded cached shifts for game 2025020174 from data/20252026/shifts/shifts_2025020174.pkl INFO:root:Loaded cached shifts for game 2025020192 from data/20252026/shifts/shifts_2025020192.pkl INFO:root:Loaded cached shifts for game 2025020202 from data/20252026/shifts/shifts_2025020202.pkl INFO:root:Loaded cached shifts for game 2025020216 from data/20252026/shifts/shifts_2025020216.pkl INFO:root:Loaded cached shifts for game 2025020244 from data/20252026/shifts/shifts_2025020244.pkl INFO:root:Loaded cached shifts for game 2025020268 from data/20252026/shifts/shifts_2025020268.pkl INFO:root:Loaded cached shifts for game 2025020291 from data/20252026/shifts/shifts_2025020291.pkl INFO:root:Loaded cached shifts for game 2025020325 from data/20252026/shifts/shifts_2025020325.pkl INFO:root:Loaded cached shifts for game 2025020350 from data/20252026/shifts/shifts_2025020350.pkl INFO:root:Loaded cached shifts for game 2025020370 from data/20252026/shifts/shifts_2025020370.pkl INFO:root:Loaded cached shifts for game 2025020389 from data/20252026/shifts/shifts_2025020389.pkl INFO:root:Loaded cached shifts for game 2025020419 from data/20252026/shifts/shifts_2025020419.pkl INFO:root:Loaded cached shifts for game 2025020435 from data/20252026/shifts/shifts_2025020435.pkl players: Ensuring xG predictions... players: Found 35 players for team CHI players: Loading league baseline... players: Using baseline path: analysis/league/20252026/5v5 league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy players: Analyzing 35 players... xgs_map: using provided DataFrame (in-memory) -> rows= 7376 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=23 team_for_game=CHI _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=26 team_for_game=CHI _apply_intervals: game 2025020048 df_game_rows=238 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=23 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=26 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020202 df_game_rows=259 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=24 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=27 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020244 df_game_rows=278 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=23 team_for_game=CHI _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=23 team_for_game=CHI _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1835 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482176, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [13 16 6 8 68 24 14 26 9 52 22 55 23 20 17 1 10 7 21 30 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482176, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482176, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025010086 from data/20252026/shifts/shifts_2025010086.pkl Saved plot to analysis/players/20252026/CHI/8482176_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6278 _apply_intervals: intervals per_game count=23 _apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025010086 df_game_rows=245 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020048 df_game_rows=238 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020202 df_game_rows=259 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020244 df_game_rows=278 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=6 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1345 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477444, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 8 68 24 26 9 52 22 55 23 20 17 10 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477444, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477444, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8477444_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 3822 _apply_intervals: intervals per_game count=14 _apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025010086 df_game_rows=245 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020048 df_game_rows=238 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=25 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 655 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477450, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [16 30 13 68 26 9 52 21 18 24 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477450, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477450, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025010097 from data/20252026/shifts/shifts_2025010097.pkl Saved plot to analysis/players/20252026/CHI/8477450_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7105 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010097 rows_in_game=291 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025010097 df_game_rows=291 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=12 team_for_game=CHI _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=10 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020048 df_game_rows=238 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=23 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020244 df_game_rows=278 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=24 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=12 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=24 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1276 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481806, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [19 16 6 8 68 24 14 26 9 52 22 23 20 17 1 10 55 7 21 30 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481806, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481806, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8481806_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7088 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025010086 df_game_rows=245 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020048 df_game_rows=238 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=24 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=24 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=12 team_for_game=CHI _apply_intervals: game 2025020202 df_game_rows=259 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020244 df_game_rows=278 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=11 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=9 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=12 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=9 team_for_game=CHI _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=11 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1218 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482703, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [16 30 13 6 8 68 24 14 26 9 52 22 55 20 17 1 10 7 21 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482703, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482703, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8482703_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6835 _apply_intervals: intervals per_game count=25 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=26 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=23 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020202 df_game_rows=259 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=24 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=24 team_for_game=CHI _apply_intervals: game 2025020244 df_game_rows=278 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=23 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=24 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=24 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=23 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1746 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481568, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [16 6 8 24 14 26 9 52 22 55 23 20 17 1 10 7 21 30 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481568, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481568, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8481568_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7372 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025010086 df_game_rows=245 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020048 df_game_rows=238 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020202 df_game_rows=259 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020244 df_game_rows=278 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=12 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1576 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477987, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 8 68 24 14 26 9 52 22 55 23 20 17 1 10 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477987, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477987, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8477987_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7078 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025010086 df_game_rows=245 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020048 df_game_rows=238 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020202 df_game_rows=259 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=6 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1386 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483493, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 8 68 24 14 26 9 52 22 55 23 20 10 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483493, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483493, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8483493_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6778 _apply_intervals: intervals per_game count=25 _apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025010086 df_game_rows=245 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=23 team_for_game=CHI _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020048 df_game_rows=238 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020202 df_game_rows=259 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=23 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020244 df_game_rows=278 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1461 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477479, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 8 68 24 14 9 52 22 55 23 20 17 1 7 21 18 54 26] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477479, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477479, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8477479_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7333 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025010086 df_game_rows=245 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020048 df_game_rows=238 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020202 df_game_rows=259 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020244 df_game_rows=278 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1452 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484783, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 68 24 14 26 9 52 22 55 23 20 17 1 10 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484783, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484783, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8484783_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7621 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025010086 df_game_rows=245 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=23 team_for_game=CHI _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=24 team_for_game=CHI _apply_intervals: game 2025020048 df_game_rows=238 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020202 df_game_rows=259 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=23 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020244 df_game_rows=278 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1887 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484144, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 8 68 24 14 26 9 52 22 55 23 20 17 1 10 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484144, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484144, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8484144_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7345 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025010086 df_game_rows=245 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=26 team_for_game=CHI _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=23 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020048 df_game_rows=238 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=24 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020202 df_game_rows=259 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020244 df_game_rows=278 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=12 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=12 team_for_game=CHI _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=10 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1582 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483506, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 8 68 24 14 26 9 52 22 55 23 20 17 1 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483506, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483506, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8483506_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7362 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025010086 df_game_rows=245 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020048 df_game_rows=238 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=12 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020244 df_game_rows=278 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=24 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=12 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1223 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476473, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [16 30 13 6 8 68 24 14 26 9 52 22 23 20 17 1 10 55 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476473, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476473, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8476473_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5229 _apply_intervals: intervals per_game count=7 _apply_intervals: game 2025010097 rows_in_game=291 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025010097 df_game_rows=291 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=12 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=8 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 Filtered season dataframe to 237 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482117, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [16 19 8 24 14 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482117, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482117, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8482117_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4312 _apply_intervals: intervals per_game count=16 _apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025010086 df_game_rows=245 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=11 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025020048 df_game_rows=238 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020202 df_game_rows=259 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020244 df_game_rows=278 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=9 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 Filtered season dataframe to 697 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473422, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [16 30 13 6 8 68 14 26 9 52 22 55 23 20 17 1 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473422, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473422, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8473422_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7621 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025010086 df_game_rows=245 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020048 df_game_rows=238 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020202 df_game_rows=259 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=23 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020244 df_game_rows=278 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=24 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1503 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476882, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 8 68 24 14 26 9 52 22 55 23 20 17 1 10 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476882, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476882, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8476882_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7059 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025010086 df_game_rows=245 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=12 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020048 df_game_rows=238 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=12 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020202 df_game_rows=259 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020244 df_game_rows=278 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=24 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1449 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481624, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [16 30 13 6 8 68 24 14 26 22 55 23 20 17 1 10 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481624, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481624, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8481624_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2233 _apply_intervals: intervals per_game count=8 _apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=9 team_for_game=CHI _apply_intervals: game 2025010086 df_game_rows=245 _apply_intervals: game 2025010097 rows_in_game=291 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025010097 df_game_rows=291 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=9 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=11 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020331 df_game_rows=260 Filtered season dataframe to 340 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478043, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [16 30 19 13 8 1 10 20 7] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478043, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478043, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8478043_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7621 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025010086 df_game_rows=245 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=25 team_for_game=CHI _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020048 df_game_rows=238 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=12 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=24 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020202 df_game_rows=259 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020244 df_game_rows=278 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=23 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=23 team_for_game=CHI _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1687 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476891, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 8 68 24 14 26 9 52 22 55 23 20 17 1 10 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476891, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476891, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8476891_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4106 _apply_intervals: intervals per_game count=15 _apply_intervals: game 2025010097 rows_in_game=291 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025010097 df_game_rows=291 _apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020202 df_game_rows=259 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020244 df_game_rows=278 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=15 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=11 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=12 team_for_game=CHI _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 829 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484197, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [19 16 55 23 20 17 1 10 21 30 18 24 54 26] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484197, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484197, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8484197_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2739 _apply_intervals: intervals per_game count=10 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=6 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=5 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=4 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=6 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=6 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=6 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=7 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=6 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=7 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 2153 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481519, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [ 8 16 9 22 1 10 55 21 30 54 26] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481519, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481519, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8481519_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6863 _apply_intervals: intervals per_game count=25 _apply_intervals: game 2025010097 rows_in_game=291 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025010097 df_game_rows=291 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020008 df_game_rows=283 _apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=11 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=12 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020160 df_game_rows=307 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=24 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020202 df_game_rows=259 _apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020216 df_game_rows=261 _apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020229 df_game_rows=283 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020325 df_game_rows=236 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020331 df_game_rows=260 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=21 team_for_game=CHI _apply_intervals: game 2025020370 df_game_rows=287 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=19 team_for_game=CHI _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025020403 df_game_rows=249 _apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=22 team_for_game=CHI _apply_intervals: game 2025020419 df_game_rows=272 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=20 team_for_game=CHI _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1367 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483450, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [16 19 13 6 24 14 26 9 52 22 55 23 20 1 10 7 21 30 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483450, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483450, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8483450_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2964 _apply_intervals: intervals per_game count=11 _apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025010086 df_game_rows=245 _apply_intervals: game 2025010097 rows_in_game=291 parsed_intervals=12 team_for_game=CHI _apply_intervals: game 2025010097 df_game_rows=291 _apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=8 team_for_game=CHI _apply_intervals: game 2025020091 df_game_rows=296 _apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=17 team_for_game=CHI _apply_intervals: game 2025020113 df_game_rows=265 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=18 team_for_game=CHI _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025020174 df_game_rows=255 _apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=13 team_for_game=CHI _apply_intervals: game 2025020192 df_game_rows=244 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=14 team_for_game=CHI _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=11 team_for_game=CHI _apply_intervals: game 2025020291 df_game_rows=276 _apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=10 team_for_game=CHI _apply_intervals: game 2025020312 df_game_rows=305 _apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=16 team_for_game=CHI _apply_intervals: game 2025020331 df_game_rows=260 Filtered season dataframe to 456 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482172, 'team': 'CHI'} team='CHI' DEBUG: xgs_map df_filtered unique teams: [16 30 19 24 14 26 52 22 1 10 20 7] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482172, 'team': 'CHI'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482172, 'team': 'CHI'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/CHI/8482172_map.png players: Saved stats to analysis/players/20252026/CHI/player_stats.csv players: Scatter plot includes 23 players (min_games=5) players: Saved scatter plot to analysis/players/20252026/CHI/player_scatter.png players: Analysis complete. Processing COL (Plotting)... Generating maps for 2 players (skipped 22 up-to-date). players: Starting analysis. Scope=season, Team=COL, Condition={'game_state': ['5v5'], 'is_net_empty': [0]} DEBUG: analyze.players called INFO:root:Loaded cached shifts for game 2025010074 from data/20252026/shifts/shifts_2025010074.pkl INFO:root:Loaded cached shifts for game 2025010092 from data/20252026/shifts/shifts_2025010092.pkl INFO:root:Loaded cached shifts for game 2025020107 from data/20252026/shifts/shifts_2025020107.pkl INFO:root:Loaded cached shifts for game 2025020140 from data/20252026/shifts/shifts_2025020140.pkl INFO:root:Loaded cached shifts for game 2025020161 from data/20252026/shifts/shifts_2025020161.pkl INFO:root:Loaded cached shifts for game 2025020178 from data/20252026/shifts/shifts_2025020178.pkl INFO:root:Loaded cached shifts for game 2025020184 from data/20252026/shifts/shifts_2025020184.pkl INFO:root:Loaded cached shifts for game 2025020240 from data/20252026/shifts/shifts_2025020240.pkl INFO:root:Loaded cached shifts for game 2025020250 from data/20252026/shifts/shifts_2025020250.pkl INFO:root:Loaded cached shifts for game 2025020326 from data/20252026/shifts/shifts_2025020326.pkl INFO:root:Loaded cached shifts for game 2025020343 from data/20252026/shifts/shifts_2025020343.pkl INFO:root:Loaded cached shifts for game 2025020371 from data/20252026/shifts/shifts_2025020371.pkl INFO:root:Loaded cached shifts for game 2025020392 from data/20252026/shifts/shifts_2025020392.pkl INFO:root:Loaded cached shifts for game 2025020417 from data/20252026/shifts/shifts_2025020417.pkl INFO:root:Loaded cached shifts for game 2025020430 from data/20252026/shifts/shifts_2025020430.pkl players: Ensuring xG predictions... players: Found 32 players for team COL players: Loading league baseline... players: Using baseline path: analysis/league/20252026/5v5 league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy players: Analyzing 33 players... xgs_map: using provided DataFrame (in-memory) -> rows= 5924 _apply_intervals: intervals per_game count=21 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=8 team_for_game=COL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=9 team_for_game=COL _apply_intervals: game 2025020107 df_game_rows=289 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=5 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=9 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=10 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=6 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=8 team_for_game=COL _apply_intervals: game 2025020184 df_game_rows=271 _apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=7 team_for_game=COL _apply_intervals: game 2025020240 df_game_rows=259 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=10 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=10 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=9 team_for_game=COL _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=9 team_for_game=COL _apply_intervals: game 2025020326 df_game_rows=282 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=11 team_for_game=COL _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=12 team_for_game=COL _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020371 df_game_rows=284 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=12 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=7 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 687 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482947, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [21 54 25 68 12 6 1 28 22 23 24 7 3 18 16 8 2] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482947, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482947, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025020003 from data/20252026/shifts/shifts_2025020003.pkl INFO:root:Loaded cached shifts for game 2025020018 from data/20252026/shifts/shifts_2025020018.pkl INFO:root:Loaded cached shifts for game 2025020034 from data/20252026/shifts/shifts_2025020034.pkl INFO:root:Loaded cached shifts for game 2025020209 from data/20252026/shifts/shifts_2025020209.pkl INFO:root:Loaded cached shifts for game 2025020300 from data/20252026/shifts/shifts_2025020300.pkl INFO:root:Loaded cached shifts for game 2025020378 from data/20252026/shifts/shifts_2025020378.pkl Saved plot to analysis/players/20252026/COL/8482947_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7942 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=24 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=27 team_for_game=COL _apply_intervals: game 2025020107 df_game_rows=289 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=24 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020184 df_game_rows=271 _apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=25 team_for_game=COL _apply_intervals: game 2025020209 df_game_rows=275 _apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020240 df_game_rows=259 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020300 df_game_rows=266 _apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020326 df_game_rows=282 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020371 df_game_rows=284 _apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=24 team_for_game=COL _apply_intervals: game 2025020378 df_game_rows=294 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 1831 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476312, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [21 54 26 68 25 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476312, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476312, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8476312_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2249 _apply_intervals: intervals per_game count=8 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=9 team_for_game=COL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=11 team_for_game=COL _apply_intervals: game 2025020209 df_game_rows=275 _apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=12 team_for_game=COL _apply_intervals: game 2025020240 df_game_rows=259 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=13 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 Filtered season dataframe to 385 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482072, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [54 21 25 1 14 22 23 24] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482072, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482072, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8482072_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8228 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=8 team_for_game=COL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020107 df_game_rows=289 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=7 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020184 df_game_rows=271 _apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020209 df_game_rows=275 _apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=11 team_for_game=COL _apply_intervals: game 2025020240 df_game_rows=259 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=12 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=13 team_for_game=COL _apply_intervals: game 2025020300 df_game_rows=266 _apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020326 df_game_rows=282 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020371 df_game_rows=284 _apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020378 df_game_rows=294 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 1254 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478109, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [54 21 25 26 68 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478109, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478109, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8478109_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1956 _apply_intervals: intervals per_game count=7 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=9 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=9 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=8 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=6 team_for_game=COL _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=3 team_for_game=COL _apply_intervals: game 2025020378 df_game_rows=294 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=3 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 Filtered season dataframe to 1276 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475809, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [21 68 7 54 16 30 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475809, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475809, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8475809_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8228 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=10 team_for_game=COL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020107 df_game_rows=289 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020184 df_game_rows=271 _apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020209 df_game_rows=275 _apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020240 df_game_rows=259 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020300 df_game_rows=266 _apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020326 df_game_rows=282 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020371 df_game_rows=284 _apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020378 df_game_rows=294 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 1809 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484258, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [21 54 25 26 68 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484258, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484258, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8484258_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7942 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=24 team_for_game=COL _apply_intervals: game 2025020107 df_game_rows=289 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020184 df_game_rows=271 _apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020209 df_game_rows=275 _apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020240 df_game_rows=259 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020300 df_game_rows=266 _apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020326 df_game_rows=282 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020371 df_game_rows=284 _apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=24 team_for_game=COL _apply_intervals: game 2025020378 df_game_rows=294 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 1730 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477476, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [54 21 26 68 25 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477476, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477476, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8477476_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7673 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=12 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020107 df_game_rows=289 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=13 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020184 df_game_rows=271 _apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020209 df_game_rows=275 _apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020240 df_game_rows=259 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020300 df_game_rows=266 _apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020326 df_game_rows=282 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020371 df_game_rows=284 _apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020378 df_game_rows=294 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 1416 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479525, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [26 21 68 25 7 12 6 1 54 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479525, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479525, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8479525_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 3682 _apply_intervals: intervals per_game count=13 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=11 team_for_game=COL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=24 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020300 df_game_rows=266 _apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020326 df_game_rows=282 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020371 df_game_rows=284 _apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020378 df_game_rows=294 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 912 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479398, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [25 21 26 68 7 2 3 18 16 28 30 8 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479398, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479398, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8479398_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7942 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=27 team_for_game=COL _apply_intervals: game 2025020107 df_game_rows=289 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=13 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020184 df_game_rows=271 _apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020209 df_game_rows=275 _apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020240 df_game_rows=259 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020300 df_game_rows=266 _apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020326 df_game_rows=282 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020371 df_game_rows=284 _apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020378 df_game_rows=294 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 1861 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480039, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [54 21 26 68 25 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480039, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480039, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8480039_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7942 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020107 df_game_rows=289 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020184 df_game_rows=271 _apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020209 df_game_rows=275 _apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=12 team_for_game=COL _apply_intervals: game 2025020240 df_game_rows=259 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020300 df_game_rows=266 _apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=24 team_for_game=COL _apply_intervals: game 2025020326 df_game_rows=282 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020371 df_game_rows=284 _apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020378 df_game_rows=294 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 1475 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476455, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [21 54 26 68 25 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476455, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476455, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8476455_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2583 _apply_intervals: intervals per_game count=9 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020107 df_game_rows=289 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=13 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=11 team_for_game=COL _apply_intervals: game 2025020184 df_game_rows=271 Filtered season dataframe to 369 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482470, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [21 25 7 68 12 6 54 28] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482470, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482470, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8482470_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7942 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=27 team_for_game=COL _apply_intervals: game 2025020107 df_game_rows=289 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020184 df_game_rows=271 _apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020209 df_game_rows=275 _apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020240 df_game_rows=259 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020300 df_game_rows=266 _apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020326 df_game_rows=282 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020371 df_game_rows=284 _apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=24 team_for_game=COL _apply_intervals: game 2025020378 df_game_rows=294 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 1855 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477492, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [54 21 26 68 25 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477492, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477492, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8477492_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5143 _apply_intervals: intervals per_game count=18 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=7 team_for_game=COL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=13 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=9 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=12 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=10 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=11 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=12 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=5 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=7 team_for_game=COL _apply_intervals: game 2025020240 df_game_rows=259 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020300 df_game_rows=266 _apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=3 team_for_game=COL _apply_intervals: game 2025020326 df_game_rows=282 Filtered season dataframe to 617 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484149, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [54 21 25 26 7 12 6 1 22 23 24 2 3] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484149, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484149, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8484149_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5711 _apply_intervals: intervals per_game count=20 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020107 df_game_rows=289 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020184 df_game_rows=271 _apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020209 df_game_rows=275 _apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=13 team_for_game=COL _apply_intervals: game 2025020240 df_game_rows=259 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=12 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 1013 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477501, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [21 54 26 68 25 7 12 6 1 28 14 22 23 24 2] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477501, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477501, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8477501_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7664 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=7 team_for_game=COL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=13 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=10 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=12 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=10 team_for_game=COL _apply_intervals: game 2025020184 df_game_rows=271 _apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=8 team_for_game=COL _apply_intervals: game 2025020240 df_game_rows=259 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=13 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=13 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=12 team_for_game=COL _apply_intervals: game 2025020300 df_game_rows=266 _apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020326 df_game_rows=282 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020371 df_game_rows=284 _apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020378 df_game_rows=294 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 1165 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480448, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [21 54 25 26 68 7 12 6 1 28 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480448, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480448, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8480448_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7676 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020107 df_game_rows=289 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020184 df_game_rows=271 _apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020209 df_game_rows=275 _apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=12 team_for_game=COL _apply_intervals: game 2025020240 df_game_rows=259 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020326 df_game_rows=282 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=14 team_for_game=COL _apply_intervals: game 2025020371 df_game_rows=284 _apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020378 df_game_rows=294 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 1344 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480835, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [54 21 26 68 25 7 12 6 1 28 14 22 23 24 3 18 16 30 8 2] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480835, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480835, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8480835_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7942 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=27 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=29 team_for_game=COL _apply_intervals: game 2025020107 df_game_rows=289 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=25 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020184 df_game_rows=271 _apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020209 df_game_rows=275 _apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020240 df_game_rows=259 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=26 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020300 df_game_rows=266 _apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020326 df_game_rows=282 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020371 df_game_rows=284 _apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=25 team_for_game=COL _apply_intervals: game 2025020378 df_game_rows=294 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 2073 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480069, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [54 21 26 68 25 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480069, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480069, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8480069_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7942 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=24 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=25 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=24 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=28 team_for_game=COL _apply_intervals: game 2025020107 df_game_rows=289 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=24 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=25 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=27 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=29 team_for_game=COL _apply_intervals: game 2025020184 df_game_rows=271 _apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020209 df_game_rows=275 _apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020240 df_game_rows=259 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020300 df_game_rows=266 _apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=24 team_for_game=COL _apply_intervals: game 2025020326 df_game_rows=282 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020371 df_game_rows=284 _apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=25 team_for_game=COL _apply_intervals: game 2025020378 df_game_rows=294 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 1915 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8470613, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [54 21 26 68 25 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8470613, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8470613, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8470613_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7683 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=24 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=25 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=29 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=31 team_for_game=COL _apply_intervals: game 2025020107 df_game_rows=289 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=25 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=26 team_for_game=COL _apply_intervals: game 2025020184 df_game_rows=271 _apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020209 df_game_rows=275 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=27 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=25 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=24 team_for_game=COL _apply_intervals: game 2025020300 df_game_rows=266 _apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=24 team_for_game=COL _apply_intervals: game 2025020326 df_game_rows=282 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=26 team_for_game=COL _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020371 df_game_rows=284 _apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=26 team_for_game=COL _apply_intervals: game 2025020378 df_game_rows=294 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=24 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 2111 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478038, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [54 21 26 68 25 7 12 6 1 28 14 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478038, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478038, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8478038_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2833 _apply_intervals: intervals per_game count=10 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=7 team_for_game=COL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=12 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=13 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020371 df_game_rows=284 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=12 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=12 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 396 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481641, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [21 54 25 26 68 28 8 23 2] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481641, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481641, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8481641_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7942 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025010074 df_game_rows=269 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020018 df_game_rows=318 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=11 team_for_game=COL _apply_intervals: game 2025020039 df_game_rows=292 _apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL _apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020107 df_game_rows=289 _apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=16 team_for_game=COL _apply_intervals: game 2025020121 df_game_rows=335 _apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020128 df_game_rows=286 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=23 team_for_game=COL _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=24 team_for_game=COL _apply_intervals: game 2025020178 df_game_rows=271 _apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020184 df_game_rows=271 _apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=20 team_for_game=COL _apply_intervals: game 2025020209 df_game_rows=275 _apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=15 team_for_game=COL _apply_intervals: game 2025020240 df_game_rows=259 _apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020250 df_game_rows=278 _apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020262 df_game_rows=296 _apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=17 team_for_game=COL _apply_intervals: game 2025020275 df_game_rows=291 _apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020300 df_game_rows=266 _apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=22 team_for_game=COL _apply_intervals: game 2025020326 df_game_rows=282 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020350 df_game_rows=266 _apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020371 df_game_rows=284 _apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020378 df_game_rows=294 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=19 team_for_game=COL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=21 team_for_game=COL _apply_intervals: game 2025020417 df_game_rows=248 _apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=18 team_for_game=COL _apply_intervals: game 2025020430 df_game_rows=292 Filtered season dataframe to 1607 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475754, 'team': 'COL'} team='COL' DEBUG: xgs_map df_filtered unique teams: [21 54 26 68 25 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475754, 'team': 'COL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475754, 'team': 'COL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/COL/8475754_map.png players: Saved stats to analysis/players/20252026/COL/player_stats.csv players: Scatter plot includes 22 players (min_games=5) players: Saved scatter plot to analysis/players/20252026/COL/player_scatter.png players: Analysis complete. Processing DAL (Plotting)... Generating maps for 1 players (skipped 23 up-to-date). players: Starting analysis. Scope=season, Team=DAL, Condition={'game_state': ['5v5'], 'is_net_empty': [0]} DEBUG: analyze.players called INFO:root:Loaded cached shifts for game 2025020310 from data/20252026/shifts/shifts_2025020310.pkl INFO:root:Loaded cached shifts for game 2025020328 from data/20252026/shifts/shifts_2025020328.pkl INFO:root:Loaded cached shifts for game 2025020360 from data/20252026/shifts/shifts_2025020360.pkl INFO:root:Loaded cached shifts for game 2025020375 from data/20252026/shifts/shifts_2025020375.pkl INFO:root:Loaded cached shifts for game 2025020390 from data/20252026/shifts/shifts_2025020390.pkl INFO:root:Loaded cached shifts for game 2025020405 from data/20252026/shifts/shifts_2025020405.pkl INFO:root:Loaded cached shifts for game 2025020415 from data/20252026/shifts/shifts_2025020415.pkl INFO:root:Loaded cached shifts for game 2025020421 from data/20252026/shifts/shifts_2025020421.pkl players: Ensuring xG predictions... players: Found 27 players for team DAL players: Loading league baseline... players: Using baseline path: analysis/league/20252026/5v5 league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy players: Analyzing 27 players... xgs_map: using provided DataFrame (in-memory) -> rows= 2305 _apply_intervals: intervals per_game count=9 _apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020310 df_game_rows=229 _apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020328 df_game_rows=274 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 _apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020375 df_game_rows=232 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020405 df_game_rows=254 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 417 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473994, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [ 2 25 23 20 22 55 68 9 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473994, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473994, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025020159 from data/20252026/shifts/shifts_2025020159.pkl INFO:root:Loaded cached shifts for game 2025020169 from data/20252026/shifts/shifts_2025020169.pkl INFO:root:Loaded cached shifts for game 2025020207 from data/20252026/shifts/shifts_2025020207.pkl INFO:root:Loaded cached shifts for game 2025020293 from data/20252026/shifts/shifts_2025020293.pkl Saved plot to analysis/players/20252026/DAL/8473994_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 3361 _apply_intervals: intervals per_game count=13 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=7 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=10 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=10 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020310 df_game_rows=229 _apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020328 df_game_rows=274 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 _apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020375 df_game_rows=232 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020405 df_game_rows=254 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 575 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478476, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [25 15 14 22 4 2 23 20 55 68 9 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478476, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478476, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025020068 from data/20252026/shifts/shifts_2025020068.pkl INFO:root:Loaded cached shifts for game 2025020083 from data/20252026/shifts/shifts_2025020083.pkl INFO:root:Loaded cached shifts for game 2025020119 from data/20252026/shifts/shifts_2025020119.pkl INFO:root:Loaded cached shifts for game 2025020145 from data/20252026/shifts/shifts_2025020145.pkl INFO:root:Loaded cached shifts for game 2025020185 from data/20252026/shifts/shifts_2025020185.pkl INFO:root:Loaded cached shifts for game 2025020233 from data/20252026/shifts/shifts_2025020233.pkl INFO:root:Loaded cached shifts for game 2025020248 from data/20252026/shifts/shifts_2025020248.pkl INFO:root:Loaded cached shifts for game 2025020258 from data/20252026/shifts/shifts_2025020258.pkl Saved plot to analysis/players/20252026/DAL/8478476_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4008 _apply_intervals: intervals per_game count=15 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=5 team_for_game=DAL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=11 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=11 team_for_game=DAL _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=11 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=11 team_for_game=DAL _apply_intervals: game 2025020258 df_game_rows=241 Filtered season dataframe to 550 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477454, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [21 25 29 26 12 18 15 14 13 22 24 55 9] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477454, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477454, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025020017 from data/20252026/shifts/shifts_2025020017.pkl INFO:root:Loaded cached shifts for game 2025020054 from data/20252026/shifts/shifts_2025020054.pkl INFO:root:Loaded cached shifts for game 2025020270 from data/20252026/shifts/shifts_2025020270.pkl Saved plot to analysis/players/20252026/DAL/8477454_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7145 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=4 team_for_game=DAL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020017 df_game_rows=299 _apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020054 df_game_rows=283 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020258 df_game_rows=241 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020310 df_game_rows=229 _apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020328 df_game_rows=274 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 _apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020375 df_game_rows=232 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020405 df_game_rows=254 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=2 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 Filtered season dataframe to 1338 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475794, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [21 25 52 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 23 20 68 3] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475794, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475794, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8475794_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7690 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=10 team_for_game=DAL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020017 df_game_rows=299 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020054 df_game_rows=283 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020258 df_game_rows=241 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020310 df_game_rows=229 _apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020328 df_game_rows=274 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 _apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020375 df_game_rows=232 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020405 df_game_rows=254 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1698 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480027, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [25 21 52 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 23 20 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480027, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480027, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8480027_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7404 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020017 df_game_rows=299 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020054 df_game_rows=283 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020258 df_game_rows=241 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=26 team_for_game=DAL _apply_intervals: game 2025020310 df_game_rows=229 _apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020328 df_game_rows=274 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 _apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=24 team_for_game=DAL _apply_intervals: game 2025020375 df_game_rows=232 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=24 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020405 df_game_rows=254 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1886 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480036, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [52 25 21 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 23 20 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480036, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480036, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8480036_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5130 _apply_intervals: intervals per_game count=19 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=7 team_for_game=DAL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020017 df_game_rows=299 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020054 df_game_rows=283 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=24 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=24 team_for_game=DAL _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=25 team_for_game=DAL _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020258 df_game_rows=241 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020270 df_game_rows=255 Filtered season dataframe to 1270 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481581, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [21 25 52 30 29 26 12 18 15 14 13 22 24 55 9 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481581, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481581, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8481581_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7690 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=8 team_for_game=DAL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020017 df_game_rows=299 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020054 df_game_rows=283 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020258 df_game_rows=241 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020310 df_game_rows=229 _apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020328 df_game_rows=274 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 _apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020375 df_game_rows=232 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020405 df_game_rows=254 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1690 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482740, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [25 21 52 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 23 20 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482740, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482740, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8482740_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5114 _apply_intervals: intervals per_game count=19 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=8 team_for_game=DAL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020017 df_game_rows=299 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=25 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020258 df_game_rows=241 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=25 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1153 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480950, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [25 21 52 29 26 12 18 15 14 13 22 24 55 9 4 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480950, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480950, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8480950_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 3825 _apply_intervals: intervals per_game count=14 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=5 team_for_game=DAL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020017 df_game_rows=299 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=5 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=11 team_for_game=DAL _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=11 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=10 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 435 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479414, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [21 25 52 29 26 12 15 14 22 4 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479414, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479414, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8479414_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 3889 _apply_intervals: intervals per_game count=15 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020258 df_game_rows=241 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020310 df_game_rows=229 _apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020328 df_game_rows=274 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020405 df_game_rows=254 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 Filtered season dataframe to 639 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480840, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [18 25 13 22 24 55 9 8 4 2 23 20 68 3] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480840, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480840, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8480840_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1282 _apply_intervals: intervals per_game count=5 _apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020328 df_game_rows=274 _apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020375 df_game_rows=232 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 254 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481609, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [23 25 55 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481609, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481609, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8481609_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7145 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020017 df_game_rows=299 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=25 team_for_game=DAL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020054 df_game_rows=283 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020258 df_game_rows=241 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020310 df_game_rows=229 _apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020328 df_game_rows=274 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020375 df_game_rows=232 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020405 df_game_rows=254 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1661 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478420, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [52 25 21 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 23 20 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478420, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478420, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8478420_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6584 _apply_intervals: intervals per_game count=25 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=7 team_for_game=DAL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020017 df_game_rows=299 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020054 df_game_rows=283 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=11 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=10 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=9 team_for_game=DAL _apply_intervals: game 2025020258 df_game_rows=241 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020310 df_game_rows=229 _apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020328 df_game_rows=274 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 _apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020375 df_game_rows=232 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020405 df_game_rows=254 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 888 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476889, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [21 25 52 30 29 26 15 14 13 24 55 9 8 4 2 23 20 22 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476889, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476889, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8476889_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6698 _apply_intervals: intervals per_game count=25 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=5 team_for_game=DAL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020017 df_game_rows=299 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=11 team_for_game=DAL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=11 team_for_game=DAL _apply_intervals: game 2025020054 df_game_rows=283 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=10 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=11 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020310 df_game_rows=229 _apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020328 df_game_rows=274 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020405 df_game_rows=254 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 986 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484829, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [21 25 52 30 26 12 18 15 14 13 22 24 55 8 4 2 23 20 68 9 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484829, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484829, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8484829_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6337 _apply_intervals: intervals per_game count=24 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=9 team_for_game=DAL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020017 df_game_rows=299 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020054 df_game_rows=283 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020258 df_game_rows=241 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=25 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020310 df_game_rows=229 _apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020328 df_game_rows=274 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=24 team_for_game=DAL _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=24 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020405 df_game_rows=254 Filtered season dataframe to 1375 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483425, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [25 21 52 30 29 26 18 15 14 22 24 55 9 8 4 2 23 20 68] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483425, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483425, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8483425_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7404 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020017 df_game_rows=299 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020054 df_game_rows=283 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020258 df_game_rows=241 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020310 df_game_rows=229 _apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020328 df_game_rows=274 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 _apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020375 df_game_rows=232 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020405 df_game_rows=254 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1293 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482145, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [52 25 21 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 23 20 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482145, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482145, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8482145_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7690 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=9 team_for_game=DAL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020017 df_game_rows=299 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020054 df_game_rows=283 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=25 team_for_game=DAL _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=24 team_for_game=DAL _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020258 df_game_rows=241 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020310 df_game_rows=229 _apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020328 df_game_rows=274 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 _apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=24 team_for_game=DAL _apply_intervals: game 2025020375 df_game_rows=232 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=24 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020405 df_game_rows=254 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=25 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=24 team_for_game=DAL _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1892 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476902, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [25 21 52 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 23 20 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476902, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476902, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8476902_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7106 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=6 team_for_game=DAL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020054 df_game_rows=283 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020258 df_game_rows=241 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=24 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020310 df_game_rows=229 _apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020328 df_game_rows=274 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 _apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=24 team_for_game=DAL _apply_intervals: game 2025020375 df_game_rows=232 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=28 team_for_game=DAL _apply_intervals: game 2025020405 df_game_rows=254 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=24 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1623 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475755, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [25 21 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 23 20 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475755, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475755, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8475755_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1914 _apply_intervals: intervals per_game count=7 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=7 team_for_game=DAL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=8 team_for_game=DAL _apply_intervals: game 2025020017 df_game_rows=299 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=6 team_for_game=DAL _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=11 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=8 team_for_game=DAL _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=6 team_for_game=DAL _apply_intervals: game 2025020258 df_game_rows=241 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=11 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 Filtered season dataframe to 1262 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479979, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [25 21 52 12 24 18 9 22] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479979, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479979, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8479979_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1421 _apply_intervals: intervals per_game count=5 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=7 team_for_game=DAL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020017 df_game_rows=299 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020054 df_game_rows=283 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL Filtered season dataframe to 254 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480878, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [21 25 52 30] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480878, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480878, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8480878_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6066 _apply_intervals: intervals per_game count=23 _apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020017 df_game_rows=299 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=24 team_for_game=DAL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=23 team_for_game=DAL _apply_intervals: game 2025020054 df_game_rows=283 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020258 df_game_rows=241 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020310 df_game_rows=229 _apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020328 df_game_rows=274 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 _apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020375 df_game_rows=232 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020405 df_game_rows=254 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1122 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478449, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [52 25 21 30 29 26 12 24 18 55 9 8 4 2 23 20 22 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478449, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478449, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8478449_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6350 _apply_intervals: intervals per_game count=24 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=7 team_for_game=DAL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=10 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=10 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=10 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=11 team_for_game=DAL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020310 df_game_rows=229 _apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020328 df_game_rows=274 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020405 df_game_rows=254 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=12 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 923 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476278, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [21 25 29 26 12 18 15 14 13 22 24 55 8 4 2 23 20 68 9 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476278, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476278, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8476278_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7416 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=6 team_for_game=DAL _apply_intervals: game 2025010092 df_game_rows=286 _apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020017 df_game_rows=299 _apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020034 df_game_rows=285 _apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020054 df_game_rows=283 _apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL _apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020106 df_game_rows=274 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020138 df_game_rows=325 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=22 team_for_game=DAL _apply_intervals: game 2025020159 df_game_rows=267 _apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020169 df_game_rows=269 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020207 df_game_rows=265 _apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=19 team_for_game=DAL _apply_intervals: game 2025020224 df_game_rows=264 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=21 team_for_game=DAL _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020248 df_game_rows=259 _apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=20 team_for_game=DAL _apply_intervals: game 2025020258 df_game_rows=241 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=18 team_for_game=DAL _apply_intervals: game 2025020293 df_game_rows=255 _apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=15 team_for_game=DAL _apply_intervals: game 2025020310 df_game_rows=229 _apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020345 df_game_rows=281 _apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020360 df_game_rows=259 _apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=13 team_for_game=DAL _apply_intervals: game 2025020375 df_game_rows=232 _apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020390 df_game_rows=241 _apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=14 team_for_game=DAL _apply_intervals: game 2025020405 df_game_rows=254 _apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=17 team_for_game=DAL _apply_intervals: game 2025020415 df_game_rows=275 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=16 team_for_game=DAL _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1398 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479351, 'team': 'DAL'} team='DAL' DEBUG: xgs_map df_filtered unique teams: [21 25 52 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 20 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479351, 'team': 'DAL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479351, 'team': 'DAL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/DAL/8479351_map.png players: Saved stats to analysis/players/20252026/DAL/player_stats.csv players: Scatter plot includes 24 players (min_games=5) players: Saved scatter plot to analysis/players/20252026/DAL/player_scatter.png players: Analysis complete. Processing DET (Plotting)... All players up to date for DET. Processing EDM (Plotting)... All players up to date for EDM. Processing FLA (Plotting)... Generating maps for 1 players (skipped 23 up-to-date). players: Starting analysis. Scope=season, Team=FLA, Condition={'game_state': ['5v5'], 'is_net_empty': [0]} DEBUG: analyze.players called INFO:root:Loaded cached shifts for game 2025010080 from data/20252026/shifts/shifts_2025010080.pkl INFO:root:Loaded cached shifts for game 2025010099 from data/20252026/shifts/shifts_2025010099.pkl INFO:root:Loaded cached shifts for game 2025020027 from data/20252026/shifts/shifts_2025020027.pkl INFO:root:Loaded cached shifts for game 2025020044 from data/20252026/shifts/shifts_2025020044.pkl INFO:root:Loaded cached shifts for game 2025020058 from data/20252026/shifts/shifts_2025020058.pkl INFO:root:Loaded cached shifts for game 2025020064 from data/20252026/shifts/shifts_2025020064.pkl INFO:root:Loaded cached shifts for game 2025020114 from data/20252026/shifts/shifts_2025020114.pkl INFO:root:Loaded cached shifts for game 2025020130 from data/20252026/shifts/shifts_2025020130.pkl INFO:root:Loaded cached shifts for game 2025020226 from data/20252026/shifts/shifts_2025020226.pkl INFO:root:Loaded cached shifts for game 2025020243 from data/20252026/shifts/shifts_2025020243.pkl INFO:root:Loaded cached shifts for game 2025020255 from data/20252026/shifts/shifts_2025020255.pkl INFO:root:Loaded cached shifts for game 2025020283 from data/20252026/shifts/shifts_2025020283.pkl INFO:root:Loaded cached shifts for game 2025020303 from data/20252026/shifts/shifts_2025020303.pkl INFO:root:Loaded cached shifts for game 2025020323 from data/20252026/shifts/shifts_2025020323.pkl INFO:root:Loaded cached shifts for game 2025020338 from data/20252026/shifts/shifts_2025020338.pkl INFO:root:Loaded cached shifts for game 2025020357 from data/20252026/shifts/shifts_2025020357.pkl INFO:root:Loaded cached shifts for game 2025020363 from data/20252026/shifts/shifts_2025020363.pkl INFO:root:Loaded cached shifts for game 2025020413 from data/20252026/shifts/shifts_2025020413.pkl players: Ensuring xG predictions... players: Found 27 players for team FLA players: Loading league baseline... players: Using baseline path: analysis/league/20252026/5v5 league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy players: Analyzing 27 players... xgs_map: using provided DataFrame (in-memory) -> rows= 7497 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025010080 df_game_rows=328 _apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025010099 df_game_rows=372 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020044 df_game_rows=248 _apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=11 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020243 df_game_rows=277 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020283 df_game_rows=286 _apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020303 df_game_rows=301 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020338 df_game_rows=309 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020413 df_game_rows=267 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1178 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480003, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [13 14 16 9 4 6 5 54 24 25 26 28 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480003, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480003, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025020012 from data/20252026/shifts/shifts_2025020012.pkl INFO:root:Loaded cached shifts for game 2025020273 from data/20252026/shifts/shifts_2025020273.pkl Saved plot to analysis/players/20252026/FLA/8480003_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8063 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025010080 df_game_rows=328 _apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025010099 df_game_rows=372 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=28 team_for_game=FLA _apply_intervals: game 2025020012 df_game_rows=275 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020044 df_game_rows=248 _apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=31 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=28 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020243 df_game_rows=277 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=26 team_for_game=FLA _apply_intervals: game 2025020273 df_game_rows=291 _apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020283 df_game_rows=286 _apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020303 df_game_rows=301 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=24 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020338 df_game_rows=309 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=26 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=24 team_for_game=FLA _apply_intervals: game 2025020413 df_game_rows=267 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1900 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478859, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478859, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478859, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8478859_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8063 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025010080 df_game_rows=328 _apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=5 team_for_game=FLA _apply_intervals: game 2025010099 df_game_rows=372 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020012 df_game_rows=275 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020044 df_game_rows=248 _apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020243 df_game_rows=277 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020273 df_game_rows=291 _apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020283 df_game_rows=286 _apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020303 df_game_rows=301 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020338 df_game_rows=309 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020413 df_game_rows=267 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1308 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482713, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [13 14 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482713, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482713, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8482713_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 3744 _apply_intervals: intervals per_game count=13 _apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=7 team_for_game=FLA _apply_intervals: game 2025010099 df_game_rows=372 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=11 team_for_game=FLA _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=11 team_for_game=FLA _apply_intervals: game 2025020303 df_game_rows=301 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025020338 df_game_rows=309 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=13 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=13 team_for_game=FLA _apply_intervals: game 2025020413 df_game_rows=267 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 441 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479393, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [14 13 24 25 26 23 1 22 18 4 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479393, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479393, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8479393_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7769 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025010080 df_game_rows=328 _apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025010099 df_game_rows=372 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020012 df_game_rows=275 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020044 df_game_rows=248 _apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020243 df_game_rows=277 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020273 df_game_rows=291 _apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020283 df_game_rows=286 _apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020303 df_game_rows=301 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020338 df_game_rows=309 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020413 df_game_rows=267 Filtered season dataframe to 1461 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473507, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [13 14 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473507, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473507, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8473507_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1919 _apply_intervals: intervals per_game count=7 _apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=6 team_for_game=FLA _apply_intervals: game 2025020012 df_game_rows=275 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=7 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=6 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=7 team_for_game=FLA _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=5 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=5 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 Filtered season dataframe to 1535 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475683, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [13 4 9 5 24 26 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475683, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475683, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8475683_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8063 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025010080 df_game_rows=328 _apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=4 team_for_game=FLA _apply_intervals: game 2025010099 df_game_rows=372 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=26 team_for_game=FLA _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020012 df_game_rows=275 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020044 df_game_rows=248 _apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=28 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=24 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=26 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020243 df_game_rows=277 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=24 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=27 team_for_game=FLA _apply_intervals: game 2025020273 df_game_rows=291 _apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020283 df_game_rows=286 _apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020303 df_game_rows=301 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=24 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020338 df_game_rows=309 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=24 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=26 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020413 df_game_rows=267 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1799 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477495, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477495, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477495, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8477495_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5786 _apply_intervals: intervals per_game count=20 _apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025010080 df_game_rows=328 _apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=7 team_for_game=FLA _apply_intervals: game 2025010099 df_game_rows=372 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020012 df_game_rows=275 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=13 team_for_game=FLA _apply_intervals: game 2025020044 df_game_rows=248 _apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020243 df_game_rows=277 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020273 df_game_rows=291 _apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020283 df_game_rows=286 Filtered season dataframe to 914 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480185, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480185, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480185, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8480185_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7691 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=6 team_for_game=FLA _apply_intervals: game 2025010080 df_game_rows=328 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020012 df_game_rows=275 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020044 df_game_rows=248 _apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020243 df_game_rows=277 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020273 df_game_rows=291 _apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020283 df_game_rows=286 _apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020303 df_game_rows=301 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020338 df_game_rows=309 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020413 df_game_rows=267 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1354 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482113, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482113, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482113, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8482113_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7394 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025010080 df_game_rows=328 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=24 team_for_game=FLA _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020012 df_game_rows=275 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020044 df_game_rows=248 _apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020243 df_game_rows=277 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020273 df_game_rows=291 _apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020283 df_game_rows=286 _apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020303 df_game_rows=301 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020338 df_game_rows=309 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020413 df_game_rows=267 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1372 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473419, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 25 24 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473419, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473419, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8473419_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 8063 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025010080 df_game_rows=328 _apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025010099 df_game_rows=372 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020012 df_game_rows=275 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020044 df_game_rows=248 _apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020243 df_game_rows=277 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020273 df_game_rows=291 _apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020283 df_game_rows=286 _apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020303 df_game_rows=301 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020338 df_game_rows=309 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020413 df_game_rows=267 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1467 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478542, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478542, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478542, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8478542_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4942 _apply_intervals: intervals per_game count=17 _apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=13 team_for_game=FLA _apply_intervals: game 2025010099 df_game_rows=372 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020044 df_game_rows=248 _apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=24 team_for_game=FLA _apply_intervals: game 2025020338 df_game_rows=309 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020413 df_game_rows=267 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=13 team_for_game=FLA _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 862 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484304, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [13 14 9 4 6 5 54 24 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484304, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484304, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8484304_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 3641 _apply_intervals: intervals per_game count=10 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020243 df_game_rows=277 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020273 df_game_rows=291 _apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=13 team_for_game=FLA _apply_intervals: game 2025020283 df_game_rows=286 _apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020338 df_game_rows=309 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 646 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482131, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [13 9 25 24 26 28 54 15 14 22 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482131, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482131, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8482131_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5451 _apply_intervals: intervals per_game count=19 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=13 team_for_game=FLA _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=11 team_for_game=FLA _apply_intervals: game 2025020012 df_game_rows=275 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025020044 df_game_rows=248 _apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=11 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=9 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=8 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=13 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020273 df_game_rows=291 _apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025020283 df_game_rows=286 _apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=9 team_for_game=FLA _apply_intervals: game 2025020303 df_game_rows=301 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=9 team_for_game=FLA _apply_intervals: game 2025020338 df_game_rows=309 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=11 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025020413 df_game_rows=267 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 669 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479316, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [16 13 4 9 6 5 24 54 15 14 23 1 22 20 10 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479316, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479316, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8479316_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6837 _apply_intervals: intervals per_game count=24 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=13 team_for_game=FLA _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025020012 df_game_rows=275 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025020044 df_game_rows=248 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=11 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=9 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=13 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=11 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025020243 df_game_rows=277 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020273 df_game_rows=291 _apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=11 team_for_game=FLA _apply_intervals: game 2025020283 df_game_rows=286 _apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020303 df_game_rows=301 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020338 df_game_rows=309 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020413 df_game_rows=267 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=15 team_for_game=FLA _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1104 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478421, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [16 13 4 9 6 5 54 24 25 28 15 14 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478421, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478421, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8478421_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7796 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025010080 df_game_rows=328 _apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=1 team_for_game=FLA _apply_intervals: game 2025010099 df_game_rows=372 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020012 df_game_rows=275 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020044 df_game_rows=248 _apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020243 df_game_rows=277 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020273 df_game_rows=291 _apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020283 df_game_rows=286 _apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020303 df_game_rows=301 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020338 df_game_rows=309 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=13 team_for_game=FLA _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1508 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477409, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477409, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477409, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8477409_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7382 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025010080 df_game_rows=328 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=24 team_for_game=FLA _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=28 team_for_game=FLA _apply_intervals: game 2025020012 df_game_rows=275 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020044 df_game_rows=248 _apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=26 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=24 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020243 df_game_rows=277 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020273 df_game_rows=291 _apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020283 df_game_rows=286 _apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020303 df_game_rows=301 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=24 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=26 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020413 df_game_rows=267 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=24 team_for_game=FLA _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1796 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478055, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478055, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478055, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8478055_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1408 _apply_intervals: intervals per_game count=5 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=11 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=11 team_for_game=FLA _apply_intervals: game 2025020338 df_game_rows=309 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=13 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=13 team_for_game=FLA _apply_intervals: game 2025020413 df_game_rows=267 Filtered season dataframe to 190 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483433, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [13 1 22 4 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483433, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483433, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8483433_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7382 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=9 team_for_game=FLA _apply_intervals: game 2025010080 df_game_rows=328 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=24 team_for_game=FLA _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=24 team_for_game=FLA _apply_intervals: game 2025020012 df_game_rows=275 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020044 df_game_rows=248 _apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020243 df_game_rows=277 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020273 df_game_rows=291 _apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020283 df_game_rows=286 _apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=24 team_for_game=FLA _apply_intervals: game 2025020303 df_game_rows=301 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=26 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020413 df_game_rows=267 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1662 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477932, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477932, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477932, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8477932_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7691 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025010080 df_game_rows=328 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020012 df_game_rows=275 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020044 df_game_rows=248 _apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020243 df_game_rows=277 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020273 df_game_rows=291 _apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020283 df_game_rows=286 _apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020303 df_game_rows=301 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020338 df_game_rows=309 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=23 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020413 df_game_rows=267 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=13 team_for_game=FLA _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1436 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477933, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477933, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477933, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8477933_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2672 _apply_intervals: intervals per_game count=9 _apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=11 team_for_game=FLA _apply_intervals: game 2025010080 df_game_rows=328 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=10 team_for_game=FLA _apply_intervals: game 2025020012 df_game_rows=275 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=8 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=9 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=13 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 Filtered season dataframe to 310 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479981, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [13 14 16 4 9 6 5 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479981, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479981, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8479981_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7691 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=8 team_for_game=FLA _apply_intervals: game 2025010080 df_game_rows=328 _apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=25 team_for_game=FLA _apply_intervals: game 2025020001 df_game_rows=303 _apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020012 df_game_rows=275 _apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020027 df_game_rows=291 _apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020044 df_game_rows=248 _apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA _apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=24 team_for_game=FLA _apply_intervals: game 2025020103 df_game_rows=297 _apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020114 df_game_rows=289 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=16 team_for_game=FLA _apply_intervals: game 2025020243 df_game_rows=277 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=17 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020273 df_game_rows=291 _apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020283 df_game_rows=286 _apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020303 df_game_rows=301 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=20 team_for_game=FLA _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020338 df_game_rows=309 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=19 team_for_game=FLA _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=21 team_for_game=FLA _apply_intervals: game 2025020363 df_game_rows=265 _apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020380 df_game_rows=322 _apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=22 team_for_game=FLA _apply_intervals: game 2025020413 df_game_rows=267 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=18 team_for_game=FLA _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1445 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477935, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477935, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477935, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8477935_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2905 _apply_intervals: intervals per_game count=9 _apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=7 team_for_game=FLA _apply_intervals: game 2025010099 df_game_rows=372 _apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025020130 df_game_rows=281 _apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=7 team_for_game=FLA _apply_intervals: game 2025020153 df_game_rows=297 _apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=13 team_for_game=FLA _apply_intervals: game 2025020185 df_game_rows=261 _apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=13 team_for_game=FLA _apply_intervals: game 2025020211 df_game_rows=294 _apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=12 team_for_game=FLA _apply_intervals: game 2025020243 df_game_rows=277 _apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020255 df_game_rows=262 _apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=14 team_for_game=FLA _apply_intervals: game 2025020273 df_game_rows=291 _apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=4 team_for_game=FLA _apply_intervals: game 2025020303 df_game_rows=301 Filtered season dataframe to 305 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481655, 'team': 'FLA'} team='FLA' DEBUG: xgs_map df_filtered unique teams: [14 13 54 24 25 28 15 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481655, 'team': 'FLA'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481655, 'team': 'FLA'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/FLA/8481655_map.png players: Saved stats to analysis/players/20252026/FLA/player_stats.csv players: Scatter plot includes 23 players (min_games=5) players: Saved scatter plot to analysis/players/20252026/FLA/player_scatter.png players: Analysis complete. Processing LAK (Plotting)... Generating maps for 1 players (skipped 21 up-to-date). players: Starting analysis. Scope=season, Team=LAK, Condition={'game_state': ['5v5'], 'is_net_empty': [0]} DEBUG: analyze.players called INFO:root:Loaded cached shifts for game 2025010081 from data/20252026/shifts/shifts_2025010081.pkl INFO:root:Loaded cached shifts for game 2025020007 from data/20252026/shifts/shifts_2025020007.pkl INFO:root:Loaded cached shifts for game 2025020022 from data/20252026/shifts/shifts_2025020022.pkl INFO:root:Loaded cached shifts for game 2025020047 from data/20252026/shifts/shifts_2025020047.pkl INFO:root:Loaded cached shifts for game 2025020137 from data/20252026/shifts/shifts_2025020137.pkl INFO:root:Loaded cached shifts for game 2025020165 from data/20252026/shifts/shifts_2025020165.pkl INFO:root:Loaded cached shifts for game 2025020177 from data/20252026/shifts/shifts_2025020177.pkl INFO:root:Loaded cached shifts for game 2025020191 from data/20252026/shifts/shifts_2025020191.pkl INFO:root:Loaded cached shifts for game 2025020212 from data/20252026/shifts/shifts_2025020212.pkl INFO:root:Loaded cached shifts for game 2025020245 from data/20252026/shifts/shifts_2025020245.pkl INFO:root:Loaded cached shifts for game 2025020269 from data/20252026/shifts/shifts_2025020269.pkl INFO:root:Loaded cached shifts for game 2025020286 from data/20252026/shifts/shifts_2025020286.pkl INFO:root:Loaded cached shifts for game 2025020304 from data/20252026/shifts/shifts_2025020304.pkl INFO:root:Loaded cached shifts for game 2025020330 from data/20252026/shifts/shifts_2025020330.pkl INFO:root:Loaded cached shifts for game 2025020359 from data/20252026/shifts/shifts_2025020359.pkl INFO:root:Loaded cached shifts for game 2025020401 from data/20252026/shifts/shifts_2025020401.pkl INFO:root:Loaded cached shifts for game 2025020420 from data/20252026/shifts/shifts_2025020420.pkl players: Ensuring xG predictions... players: Found 23 players for team LAK players: Loading league baseline... players: Using baseline path: analysis/league/20252026/5v5 league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy players: Analyzing 23 players... xgs_map: using provided DataFrame (in-memory) -> rows= 6487 _apply_intervals: intervals per_game count=24 _apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025010081 df_game_rows=232 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020007 df_game_rows=322 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020165 df_game_rows=233 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020245 df_game_rows=256 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020359 df_game_rows=230 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020401 df_game_rows=247 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1283 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8471685, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 18 16 28 17 1 13 5 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8471685, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8471685, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025020071 from data/20252026/shifts/shifts_2025020071.pkl INFO:root:Loaded cached shifts for game 2025020104 from data/20252026/shifts/shifts_2025020104.pkl INFO:root:Loaded cached shifts for game 2025020257 from data/20252026/shifts/shifts_2025020257.pkl Saved plot to analysis/players/20252026/LAK/8471685_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7799 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025010081 df_game_rows=232 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020007 df_game_rows=322 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020104 df_game_rows=241 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020165 df_game_rows=233 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020245 df_game_rows=256 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020359 df_game_rows=230 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020401 df_game_rows=247 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1514 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477960, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477960, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477960, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8477960_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7567 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020007 df_game_rows=322 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020104 df_game_rows=241 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020165 df_game_rows=233 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020245 df_game_rows=256 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=24 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=23 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=24 team_for_game=LAK _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=27 team_for_game=LAK _apply_intervals: game 2025020359 df_game_rows=230 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=30 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020401 df_game_rows=247 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1701 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476441, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476441, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476441, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8476441_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7799 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=23 team_for_game=LAK _apply_intervals: game 2025010081 df_game_rows=232 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020007 df_game_rows=322 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020104 df_game_rows=241 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020165 df_game_rows=233 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=24 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020245 df_game_rows=256 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=23 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=25 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020359 df_game_rows=230 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020401 df_game_rows=247 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=23 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1872 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482730, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482730, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482730, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8482730_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5478 _apply_intervals: intervals per_game count=20 _apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025010081 df_game_rows=232 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020007 df_game_rows=322 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020104 df_game_rows=241 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020245 df_game_rows=256 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020359 df_game_rows=230 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 982 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477998, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 5 8 10 9 15 28 6 16] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477998, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477998, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8477998_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1303 _apply_intervals: intervals per_game count=5 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=7 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=6 team_for_game=LAK _apply_intervals: game 2025020104 df_game_rows=241 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=5 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=10 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=7 team_for_game=LAK _apply_intervals: game 2025020359 df_game_rows=230 Filtered season dataframe to 966 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475311, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [52 26 19 1 9] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475311, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475311, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8475311_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7561 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025010081 df_game_rows=232 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=10 team_for_game=LAK _apply_intervals: game 2025020007 df_game_rows=322 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020104 df_game_rows=241 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020165 df_game_rows=233 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=11 team_for_game=LAK _apply_intervals: game 2025020245 df_game_rows=256 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020359 df_game_rows=230 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020401 df_game_rows=247 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1269 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476469, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [68 26 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476469, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476469, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8476469_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7266 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025010081 df_game_rows=232 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020007 df_game_rows=322 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020165 df_game_rows=233 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020245 df_game_rows=256 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020359 df_game_rows=230 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020401 df_game_rows=247 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1387 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479675, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 25 18 16 28 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479675, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479675, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8479675_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2094 _apply_intervals: intervals per_game count=8 _apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025010081 df_game_rows=232 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=2 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020359 df_game_rows=230 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 Filtered season dataframe to 372 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479421, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 68 17 15 28 6 9 24] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479421, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479421, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8479421_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7571 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025010081 df_game_rows=232 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020007 df_game_rows=322 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020104 df_game_rows=241 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020165 df_game_rows=233 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020245 df_game_rows=256 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020359 df_game_rows=230 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020401 df_game_rows=247 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1510 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476479, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476479, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476479, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8476479_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5982 _apply_intervals: intervals per_game count=22 _apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=24 team_for_game=LAK _apply_intervals: game 2025010081 df_game_rows=232 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=24 team_for_game=LAK _apply_intervals: game 2025020007 df_game_rows=322 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=26 team_for_game=LAK _apply_intervals: game 2025020104 df_game_rows=241 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=24 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020165 df_game_rows=233 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=23 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=24 team_for_game=LAK _apply_intervals: game 2025020245 df_game_rows=256 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1516 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474563, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474563, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474563, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8474563_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7799 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025010081 df_game_rows=232 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020007 df_game_rows=322 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=23 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020104 df_game_rows=241 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=23 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020165 df_game_rows=233 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020245 df_game_rows=256 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=24 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020359 df_game_rows=230 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=26 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=23 team_for_game=LAK _apply_intervals: game 2025020401 df_game_rows=247 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1929 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475208, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475208, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475208, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8475208_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7799 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025010081 df_game_rows=232 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020007 df_game_rows=322 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020104 df_game_rows=241 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020165 df_game_rows=233 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020245 df_game_rows=256 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020359 df_game_rows=230 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020401 df_game_rows=247 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1580 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482124, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482124, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482124, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8482124_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7799 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025010081 df_game_rows=232 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020007 df_game_rows=322 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020104 df_game_rows=241 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=23 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020165 df_game_rows=233 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020245 df_game_rows=256 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020359 df_game_rows=230 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=24 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020401 df_game_rows=247 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1816 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476879, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476879, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476879, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8476879_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5475 _apply_intervals: intervals per_game count=21 _apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020104 df_game_rows=241 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020165 df_game_rows=233 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=11 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020245 df_game_rows=256 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=11 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=10 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=10 team_for_game=LAK _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=9 team_for_game=LAK _apply_intervals: game 2025020359 df_game_rows=230 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=11 team_for_game=LAK _apply_intervals: game 2025020401 df_game_rows=247 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 945 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8470621, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 19 25 18 16 28 17 1 52 13 5 8 10 9 15 6 24 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8470621, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8470621, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8470621_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7061 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025010081 df_game_rows=232 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020007 df_game_rows=322 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020104 df_game_rows=241 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020165 df_game_rows=233 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=11 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=9 team_for_game=LAK _apply_intervals: game 2025020245 df_game_rows=256 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=4 team_for_game=LAK _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020359 df_game_rows=230 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020401 df_game_rows=247 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=9 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1088 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483808, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 6 9 23 15] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483808, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483808, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8483808_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5157 _apply_intervals: intervals per_game count=19 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=9 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=10 team_for_game=LAK _apply_intervals: game 2025020007 df_game_rows=322 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=9 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=11 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020165 df_game_rows=233 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=8 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=10 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=11 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=11 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=11 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020401 df_game_rows=247 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=8 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 Filtered season dataframe to 648 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482408, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 24 21 54 52 30 25 28 17 1 13 10 9 15 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482408, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482408, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8482408_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7512 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025010081 df_game_rows=232 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020007 df_game_rows=322 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020104 df_game_rows=241 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020165 df_game_rows=233 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020245 df_game_rows=256 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020359 df_game_rows=230 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020401 df_game_rows=247 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1499 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482155, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 68 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 24 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482155, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482155, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8482155_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7799 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025010081 df_game_rows=232 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020007 df_game_rows=322 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020104 df_game_rows=241 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020165 df_game_rows=233 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=11 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020245 df_game_rows=256 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020359 df_game_rows=230 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020401 df_game_rows=247 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1628 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477942, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477942, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477942, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8477942_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6397 _apply_intervals: intervals per_game count=24 _apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025010081 df_game_rows=232 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=10 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=13 team_for_game=LAK _apply_intervals: game 2025020104 df_game_rows=241 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=14 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020165 df_game_rows=233 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=8 team_for_game=LAK _apply_intervals: game 2025020245 df_game_rows=256 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=10 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=12 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=10 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=8 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=11 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 982 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481532, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [68 26 24 21 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481532, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481532, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8481532_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7080 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025010081 df_game_rows=232 _apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025010090 df_game_rows=287 _apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=16 team_for_game=LAK _apply_intervals: game 2025020003 df_game_rows=307 _apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=23 team_for_game=LAK _apply_intervals: game 2025020007 df_game_rows=322 _apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=15 team_for_game=LAK _apply_intervals: game 2025020022 df_game_rows=317 _apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020047 df_game_rows=313 _apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK _apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=24 team_for_game=LAK _apply_intervals: game 2025020104 df_game_rows=241 _apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020119 df_game_rows=268 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=24 team_for_game=LAK _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020144 df_game_rows=262 _apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020177 df_game_rows=292 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=17 team_for_game=LAK _apply_intervals: game 2025020212 df_game_rows=238 _apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020226 df_game_rows=243 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=23 team_for_game=LAK _apply_intervals: game 2025020269 df_game_rows=261 _apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020286 df_game_rows=231 _apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=23 team_for_game=LAK _apply_intervals: game 2025020304 df_game_rows=246 _apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=18 team_for_game=LAK _apply_intervals: game 2025020330 df_game_rows=280 _apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=21 team_for_game=LAK _apply_intervals: game 2025020334 df_game_rows=285 _apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=27 team_for_game=LAK _apply_intervals: game 2025020384 df_game_rows=282 _apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=22 team_for_game=LAK _apply_intervals: game 2025020401 df_game_rows=247 _apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=19 team_for_game=LAK _apply_intervals: game 2025020420 df_game_rows=247 _apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=20 team_for_game=LAK _apply_intervals: game 2025020435 df_game_rows=298 Filtered season dataframe to 1601 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479998, 'team': 'LAK'} team='LAK' DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 17 1 13 8 10 9 15 28 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479998, 'team': 'LAK'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479998, 'team': 'LAK'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/LAK/8479998_map.png players: Saved stats to analysis/players/20252026/LAK/player_stats.csv players: Scatter plot includes 21 players (min_games=5) players: Saved scatter plot to analysis/players/20252026/LAK/player_scatter.png players: Analysis complete. Processing MIN (Plotting)... All players up to date for MIN. Processing MTL (Plotting)... Generating maps for 2 players (skipped 22 up-to-date). players: Starting analysis. Scope=season, Team=MTL, Condition={'game_state': ['5v5'], 'is_net_empty': [0]} DEBUG: analyze.players called INFO:root:Loaded cached shifts for game 2025010096 from data/20252026/shifts/shifts_2025010096.pkl INFO:root:Loaded cached shifts for game 2025020004 from data/20252026/shifts/shifts_2025020004.pkl INFO:root:Loaded cached shifts for game 2025020010 from data/20252026/shifts/shifts_2025020010.pkl INFO:root:Loaded cached shifts for game 2025020050 from data/20252026/shifts/shifts_2025020050.pkl INFO:root:Loaded cached shifts for game 2025020062 from data/20252026/shifts/shifts_2025020062.pkl INFO:root:Loaded cached shifts for game 2025020080 from data/20252026/shifts/shifts_2025020080.pkl INFO:root:Loaded cached shifts for game 2025020122 from data/20252026/shifts/shifts_2025020122.pkl INFO:root:Loaded cached shifts for game 2025020136 from data/20252026/shifts/shifts_2025020136.pkl INFO:root:Loaded cached shifts for game 2025020164 from data/20252026/shifts/shifts_2025020164.pkl INFO:root:Loaded cached shifts for game 2025020187 from data/20252026/shifts/shifts_2025020187.pkl INFO:root:Loaded cached shifts for game 2025020204 from data/20252026/shifts/shifts_2025020204.pkl INFO:root:Loaded cached shifts for game 2025020220 from data/20252026/shifts/shifts_2025020220.pkl INFO:root:Loaded cached shifts for game 2025020235 from data/20252026/shifts/shifts_2025020235.pkl INFO:root:Loaded cached shifts for game 2025020320 from data/20252026/shifts/shifts_2025020320.pkl INFO:root:Loaded cached shifts for game 2025020337 from data/20252026/shifts/shifts_2025020337.pkl INFO:root:Loaded cached shifts for game 2025020372 from data/20252026/shifts/shifts_2025020372.pkl INFO:root:Loaded cached shifts for game 2025020383 from data/20252026/shifts/shifts_2025020383.pkl INFO:root:Loaded cached shifts for game 2025020411 from data/20252026/shifts/shifts_2025020411.pkl INFO:root:Loaded cached shifts for game 2025020422 from data/20252026/shifts/shifts_2025020422.pkl players: Ensuring xG predictions... players: Found 29 players for team MTL players: Loading league baseline... players: Using baseline path: analysis/league/20252026/5v5 league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy players: Analyzing 29 players... xgs_map: using provided DataFrame (in-memory) -> rows= 7261 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025010096 df_game_rows=255 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020010 df_game_rows=255 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020050 df_game_rows=288 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=21 team_for_game=MTL _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=25 team_for_game=MTL _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=25 team_for_game=MTL _apply_intervals: game 2025020122 df_game_rows=260 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=24 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020187 df_game_rows=266 _apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=21 team_for_game=MTL _apply_intervals: game 2025020204 df_game_rows=299 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=24 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=23 team_for_game=MTL _apply_intervals: game 2025020235 df_game_rows=253 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=25 team_for_game=MTL _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020320 df_game_rows=287 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=21 team_for_game=MTL _apply_intervals: game 2025020372 df_game_rows=265 _apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=24 team_for_game=MTL _apply_intervals: game 2025020383 df_game_rows=254 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=25 team_for_game=MTL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020411 df_game_rows=274 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=27 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 1906 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483457, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 8 9 10 17 16 55 7 20 22 23 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483457, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483457, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8483457_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6752 _apply_intervals: intervals per_game count=25 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020010 df_game_rows=255 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020050 df_game_rows=288 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=24 team_for_game=MTL _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=23 team_for_game=MTL _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=24 team_for_game=MTL _apply_intervals: game 2025020122 df_game_rows=260 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=21 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020187 df_game_rows=266 _apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020204 df_game_rows=299 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020235 df_game_rows=253 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020320 df_game_rows=287 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020372 df_game_rows=265 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=21 team_for_game=MTL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020411 df_game_rows=274 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 1558 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478851, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [10 8 17 16 55 7 20 22 23 9 4 1 68 26 25 6 29 15 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478851, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478851, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8478851_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7261 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025010096 df_game_rows=255 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020010 df_game_rows=255 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020050 df_game_rows=288 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020122 df_game_rows=260 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020187 df_game_rows=266 _apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020204 df_game_rows=299 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020235 df_game_rows=253 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=21 team_for_game=MTL _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020320 df_game_rows=287 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020372 df_game_rows=265 _apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020383 df_game_rows=254 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020411 df_game_rows=274 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 1477 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481540, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 8 9 10 17 16 55 7 20 22 23 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481540, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481540, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8481540_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1455 _apply_intervals: intervals per_game count=5 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=10 team_for_game=MTL _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020320 df_game_rows=287 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=10 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 219 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483728, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 6 8 29 15 10 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483728, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483728, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8483728_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7261 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025010096 df_game_rows=255 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020010 df_game_rows=255 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020050 df_game_rows=288 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=21 team_for_game=MTL _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=21 team_for_game=MTL _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020122 df_game_rows=260 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020187 df_game_rows=266 _apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020204 df_game_rows=299 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020235 df_game_rows=253 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020320 df_game_rows=287 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020372 df_game_rows=265 _apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020383 df_game_rows=254 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020411 df_game_rows=274 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=21 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 1534 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480018, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 8 9 10 17 16 55 7 20 22 23 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480018, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480018, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8480018_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6484 _apply_intervals: intervals per_game count=24 _apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025010096 df_game_rows=255 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020010 df_game_rows=255 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=11 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020050 df_game_rows=288 _apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020122 df_game_rows=260 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=11 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020187 df_game_rows=266 _apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020204 df_game_rows=299 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020235 df_game_rows=253 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=10 team_for_game=MTL _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=11 team_for_game=MTL _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=10 team_for_game=MTL _apply_intervals: game 2025020320 df_game_rows=287 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020383 df_game_rows=254 _apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020411 df_game_rows=274 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 1182 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482964, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 9 8 10 17 16 55 7 20 22 23 4 1 68 26 25 6 29 15 54 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482964, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482964, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8482964_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1982 _apply_intervals: intervals per_game count=2 _apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025010096 df_game_rows=255 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 Filtered season dataframe to 77 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478104, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 8 9 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478104, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478104, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8478104_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1600 _apply_intervals: intervals per_game count=6 _apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025010096 df_game_rows=255 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020010 df_game_rows=255 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=23 team_for_game=MTL _apply_intervals: game 2025020050 df_game_rows=288 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL Filtered season dataframe to 402 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482087, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 8 9 10 17 16 55] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482087, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482087, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8482087_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5074 _apply_intervals: intervals per_game count=19 _apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025010096 df_game_rows=255 _apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=11 team_for_game=MTL _apply_intervals: game 2025020122 df_game_rows=260 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020235 df_game_rows=253 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020320 df_game_rows=287 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=11 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020372 df_game_rows=265 _apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020383 df_game_rows=254 _apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020411 df_game_rows=274 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=11 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 850 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480813, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 9 8 7 20 22 23 55 1 68 26 25 6 29 15 10 54 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480813, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480813, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8480813_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7006 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020010 df_game_rows=255 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020050 df_game_rows=288 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020122 df_game_rows=260 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020187 df_game_rows=266 _apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020204 df_game_rows=299 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020235 df_game_rows=253 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020320 df_game_rows=287 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020372 df_game_rows=265 _apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020383 df_game_rows=254 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020411 df_game_rows=274 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=9 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 1218 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482737, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [10 8 17 16 55 7 20 22 23 9 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482737, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482737, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8482737_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1341 _apply_intervals: intervals per_game count=5 _apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025010096 df_game_rows=255 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020372 df_game_rows=265 _apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020383 df_game_rows=254 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020392 df_game_rows=277 Filtered season dataframe to 222 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484403, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 8 9 10 68 54 21] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484403, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484403, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8484403_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6771 _apply_intervals: intervals per_game count=25 _apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025010096 df_game_rows=255 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020050 df_game_rows=288 _apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=21 team_for_game=MTL _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020122 df_game_rows=260 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020187 df_game_rows=266 _apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020204 df_game_rows=299 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020235 df_game_rows=253 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=6 team_for_game=MTL _apply_intervals: game 2025020320 df_game_rows=287 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020372 df_game_rows=265 _apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020383 df_game_rows=254 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020411 df_game_rows=274 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 1193 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478133, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 9 8 10 16 55 7 20 22 23 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478133, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478133, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8478133_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6138 _apply_intervals: intervals per_game count=23 _apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025010096 df_game_rows=255 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020010 df_game_rows=255 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020050 df_game_rows=288 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020122 df_game_rows=260 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020204 df_game_rows=299 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020235 df_game_rows=253 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020320 df_game_rows=287 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020372 df_game_rows=265 _apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020383 df_game_rows=254 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 1146 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476981, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 9 8 10 17 16 55 7 20 22 23 4 1 68 26 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476981, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476981, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8476981_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5874 _apply_intervals: intervals per_game count=22 _apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025010096 df_game_rows=255 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=23 team_for_game=MTL _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020122 df_game_rows=260 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020187 df_game_rows=266 _apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020204 df_game_rows=299 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=21 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020235 df_game_rows=253 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=11 team_for_game=MTL _apply_intervals: game 2025020320 df_game_rows=287 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020372 df_game_rows=265 _apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020383 df_game_rows=254 _apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020411 df_game_rows=274 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 1265 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481593, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 9 8 7 20 22 23 55 4 1 68 26 25 6 29 15 10 54 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481593, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481593, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8481593_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7261 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025010096 df_game_rows=255 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020010 df_game_rows=255 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020050 df_game_rows=288 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020122 df_game_rows=260 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=21 team_for_game=MTL _apply_intervals: game 2025020187 df_game_rows=266 _apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020204 df_game_rows=299 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020235 df_game_rows=253 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020320 df_game_rows=287 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020372 df_game_rows=265 _apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020383 df_game_rows=254 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020411 df_game_rows=274 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 1454 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483515, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 8 9 10 17 16 55 7 20 22 23 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483515, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483515, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8483515_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7006 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025010096 df_game_rows=255 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020050 df_game_rows=288 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=21 team_for_game=MTL _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020122 df_game_rows=260 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020187 df_game_rows=266 _apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020204 df_game_rows=299 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020235 df_game_rows=253 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020320 df_game_rows=287 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020372 df_game_rows=265 _apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020383 df_game_rows=254 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020411 df_game_rows=274 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 1341 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475848, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 9 8 10 16 55 7 20 22 23 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475848, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475848, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8475848_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 3170 _apply_intervals: intervals per_game count=4 _apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020383 df_game_rows=254 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020411 df_game_rows=274 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 242 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480074, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [54 8 21 9 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480074, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480074, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8480074_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6753 _apply_intervals: intervals per_game count=25 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=23 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020010 df_game_rows=255 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=21 team_for_game=MTL _apply_intervals: game 2025020050 df_game_rows=288 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=28 team_for_game=MTL _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=30 team_for_game=MTL _apply_intervals: game 2025020122 df_game_rows=260 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=24 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020187 df_game_rows=266 _apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=27 team_for_game=MTL _apply_intervals: game 2025020204 df_game_rows=299 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=26 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=25 team_for_game=MTL _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020320 df_game_rows=287 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=27 team_for_game=MTL _apply_intervals: game 2025020372 df_game_rows=265 _apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=28 team_for_game=MTL _apply_intervals: game 2025020383 df_game_rows=254 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=23 team_for_game=MTL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=21 team_for_game=MTL _apply_intervals: game 2025020411 df_game_rows=274 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=26 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 1845 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476875, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 8 10 17 16 55 7 20 22 23 9 4 1 26 25 6 29 15 68 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476875, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476875, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8476875_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 3951 _apply_intervals: intervals per_game count=15 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020050 df_game_rows=288 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020122 df_game_rows=260 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=11 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020187 df_game_rows=266 _apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020204 df_game_rows=299 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020235 df_game_rows=253 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=6 team_for_game=MTL _apply_intervals: game 2025020270 df_game_rows=255 Filtered season dataframe to 597 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481618, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [10 8 16 55 7 22 23 9 4 1 68 26 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481618, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481618, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8481618_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6458 _apply_intervals: intervals per_game count=24 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020010 df_game_rows=255 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=10 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020187 df_game_rows=266 _apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020204 df_game_rows=299 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020235 df_game_rows=253 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=10 team_for_game=MTL _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020320 df_game_rows=287 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020372 df_game_rows=265 _apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020383 df_game_rows=254 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020411 df_game_rows=274 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 998 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482775, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [10 8 17 16 7 20 23 55 9 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482775, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482775, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8482775_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7261 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025010096 df_game_rows=255 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=24 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020010 df_game_rows=255 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=21 team_for_game=MTL _apply_intervals: game 2025020050 df_game_rows=288 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=25 team_for_game=MTL _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020122 df_game_rows=260 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=24 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020187 df_game_rows=266 _apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=26 team_for_game=MTL _apply_intervals: game 2025020204 df_game_rows=299 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=21 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=23 team_for_game=MTL _apply_intervals: game 2025020235 df_game_rows=253 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=25 team_for_game=MTL _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020320 df_game_rows=287 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=24 team_for_game=MTL _apply_intervals: game 2025020372 df_game_rows=265 _apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=24 team_for_game=MTL _apply_intervals: game 2025020383 df_game_rows=254 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=28 team_for_game=MTL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020411 df_game_rows=274 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=24 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 1871 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480865, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 9 8 10 17 16 55 7 20 22 23 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480865, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480865, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8480865_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1600 _apply_intervals: intervals per_game count=6 _apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025010096 df_game_rows=255 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020010 df_game_rows=255 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=10 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020050 df_game_rows=288 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL Filtered season dataframe to 212 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479339, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 9 8 10 17 16 55] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479339, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479339, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8479339_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4260 _apply_intervals: intervals per_game count=16 _apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025010096 df_game_rows=255 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020010 df_game_rows=255 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020050 df_game_rows=288 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020122 df_game_rows=260 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020187 df_game_rows=266 _apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020204 df_game_rows=299 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020235 df_game_rows=253 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=19 team_for_game=MTL _apply_intervals: game 2025020285 df_game_rows=328 Filtered season dataframe to 824 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481523, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [ 9 8 10 17 16 55 22 23 4 1 68 26 25 6] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481523, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481523, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8481523_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7006 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=20 team_for_game=MTL _apply_intervals: game 2025020004 df_game_rows=279 _apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020010 df_game_rows=255 _apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=10 team_for_game=MTL _apply_intervals: game 2025020031 df_game_rows=288 _apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020050 df_game_rows=288 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL _apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020095 df_game_rows=273 _apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020110 df_game_rows=275 _apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020122 df_game_rows=260 _apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020136 df_game_rows=270 _apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=11 team_for_game=MTL _apply_intervals: game 2025020164 df_game_rows=235 _apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020187 df_game_rows=266 _apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020204 df_game_rows=299 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020235 df_game_rows=253 _apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020257 df_game_rows=257 _apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=13 team_for_game=MTL _apply_intervals: game 2025020270 df_game_rows=255 _apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=11 team_for_game=MTL _apply_intervals: game 2025020285 df_game_rows=328 _apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020305 df_game_rows=240 _apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=14 team_for_game=MTL _apply_intervals: game 2025020320 df_game_rows=287 _apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=12 team_for_game=MTL _apply_intervals: game 2025020337 df_game_rows=290 _apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=16 team_for_game=MTL _apply_intervals: game 2025020372 df_game_rows=265 _apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=17 team_for_game=MTL _apply_intervals: game 2025020383 df_game_rows=254 _apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=15 team_for_game=MTL _apply_intervals: game 2025020392 df_game_rows=277 _apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=18 team_for_game=MTL _apply_intervals: game 2025020411 df_game_rows=274 _apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=22 team_for_game=MTL _apply_intervals: game 2025020422 df_game_rows=310 Filtered season dataframe to 1077 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484984, 'team': 'MTL'} team='MTL' DEBUG: xgs_map df_filtered unique teams: [10 8 17 16 55 7 20 22 23 9 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484984, 'team': 'MTL'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484984, 'team': 'MTL'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/MTL/8484984_map.png players: Saved stats to analysis/players/20252026/MTL/player_stats.csv players: Scatter plot includes 24 players (min_games=5) players: Saved scatter plot to analysis/players/20252026/MTL/player_scatter.png players: Analysis complete. Processing NJD (Plotting)... Generating maps for 2 players (skipped 23 up-to-date). players: Starting analysis. Scope=season, Team=NJD, Condition={'game_state': ['5v5'], 'is_net_empty': [0]} DEBUG: analyze.players called INFO:root:Loaded cached shifts for game 2025010082 from data/20252026/shifts/shifts_2025010082.pkl INFO:root:Loaded cached shifts for game 2025020026 from data/20252026/shifts/shifts_2025020026.pkl INFO:root:Loaded cached shifts for game 2025020078 from data/20252026/shifts/shifts_2025020078.pkl INFO:root:Loaded cached shifts for game 2025020098 from data/20252026/shifts/shifts_2025020098.pkl INFO:root:Loaded cached shifts for game 2025020108 from data/20252026/shifts/shifts_2025020108.pkl INFO:root:Loaded cached shifts for game 2025020124 from data/20252026/shifts/shifts_2025020124.pkl INFO:root:Loaded cached shifts for game 2025020176 from data/20252026/shifts/shifts_2025020176.pkl INFO:root:Loaded cached shifts for game 2025020231 from data/20252026/shifts/shifts_2025020231.pkl INFO:root:Loaded cached shifts for game 2025020252 from data/20252026/shifts/shifts_2025020252.pkl INFO:root:Loaded cached shifts for game 2025020288 from data/20252026/shifts/shifts_2025020288.pkl INFO:root:Loaded cached shifts for game 2025020309 from data/20252026/shifts/shifts_2025020309.pkl INFO:root:Loaded cached shifts for game 2025020339 from data/20252026/shifts/shifts_2025020339.pkl INFO:root:Loaded cached shifts for game 2025020354 from data/20252026/shifts/shifts_2025020354.pkl INFO:root:Loaded cached shifts for game 2025020364 from data/20252026/shifts/shifts_2025020364.pkl INFO:root:Loaded cached shifts for game 2025020395 from data/20252026/shifts/shifts_2025020395.pkl players: Ensuring xG predictions... players: Found 40 players for team NJD players: Loading league baseline... players: Using baseline path: analysis/league/20252026/5v5 league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy players: Analyzing 40 players... xgs_map: using provided DataFrame (in-memory) -> rows= 7608 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025010082 df_game_rows=210 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020026 df_game_rows=284 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020098 df_game_rows=291 _apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020108 df_game_rows=274 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020176 df_game_rows=269 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020252 df_game_rows=238 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020288 df_game_rows=291 _apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020309 df_game_rows=250 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020339 df_game_rows=289 _apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020354 df_game_rows=300 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020395 df_game_rows=282 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1737 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480002, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 26 24 8 5 2 16 15 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480002, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480002, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8480002_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7049 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025010082 df_game_rows=210 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020026 df_game_rows=284 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020098 df_game_rows=291 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020176 df_game_rows=269 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020252 df_game_rows=238 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020288 df_game_rows=291 _apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020309 df_game_rows=250 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=12 team_for_game=NJD _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020339 df_game_rows=289 _apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020354 df_game_rows=300 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020395 df_game_rows=282 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1184 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476292, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 28 21 26 24 8 5 2 16 15 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476292, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476292, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025010094 from data/20252026/shifts/shifts_2025010094.pkl Saved plot to analysis/players/20252026/NJD/8476292_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7354 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025010082 df_game_rows=210 _apply_intervals: game 2025010094 rows_in_game=272 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025010094 df_game_rows=272 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020026 df_game_rows=284 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=10 team_for_game=NJD _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020098 df_game_rows=291 _apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020108 df_game_rows=274 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020176 df_game_rows=269 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020252 df_game_rows=238 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020288 df_game_rows=291 _apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020309 df_game_rows=250 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020339 df_game_rows=289 _apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020354 df_game_rows=300 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020395 df_game_rows=282 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1411 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481032, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 3 4 12 14 29 10 30 28 21 26 24 5 2 16 15 13 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481032, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481032, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8481032_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6401 _apply_intervals: intervals per_game count=24 _apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025010082 df_game_rows=210 _apply_intervals: game 2025010094 rows_in_game=272 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025010094 df_game_rows=272 _apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020026 df_game_rows=284 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=11 team_for_game=NJD _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020098 df_game_rows=291 _apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=12 team_for_game=NJD _apply_intervals: game 2025020108 df_game_rows=274 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=12 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020176 df_game_rows=269 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=12 team_for_game=NJD _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=12 team_for_game=NJD _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=13 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020252 df_game_rows=238 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=12 team_for_game=NJD _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020309 df_game_rows=250 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020339 df_game_rows=289 _apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020354 df_game_rows=300 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=11 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=11 team_for_game=NJD _apply_intervals: game 2025020395 df_game_rows=282 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=13 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 839 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476822, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 3 4 14 29 10 30 28 21 26 24 8 5 2 16 13 17 19 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476822, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476822, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8476822_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4863 _apply_intervals: intervals per_game count=18 _apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025010082 df_game_rows=210 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020026 df_game_rows=284 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=13 team_for_game=NJD _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020098 df_game_rows=291 _apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020108 df_game_rows=274 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020176 df_game_rows=269 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020252 df_game_rows=238 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020268 df_game_rows=265 Filtered season dataframe to 1073 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481559, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 26 24 8 5 2 16] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481559, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481559, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8481559_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 3172 _apply_intervals: intervals per_game count=12 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020252 df_game_rows=238 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020288 df_game_rows=291 _apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020309 df_game_rows=250 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020339 df_game_rows=289 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 681 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479395, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [26 1 24 8 5 2 16 15 14 13 4 29 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479395, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479395, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8479395_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1603 _apply_intervals: intervals per_game count=6 _apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025010082 df_game_rows=210 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=13 team_for_game=NJD _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020309 df_game_rows=250 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=12 team_for_game=NJD _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=13 team_for_game=NJD _apply_intervals: game 2025020339 df_game_rows=289 _apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020354 df_game_rows=300 Filtered season dataframe to 257 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474149, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 13 4 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474149, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474149, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8474149_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7608 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025010082 df_game_rows=210 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020026 df_game_rows=284 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=12 team_for_game=NJD _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020098 df_game_rows=291 _apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020108 df_game_rows=274 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020176 df_game_rows=269 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=27 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020252 df_game_rows=238 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020288 df_game_rows=291 _apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020309 df_game_rows=250 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020339 df_game_rows=289 _apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=26 team_for_game=NJD _apply_intervals: game 2025020354 df_game_rows=300 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020395 df_game_rows=282 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 2045 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483495, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 26 24 8 5 2 16 15 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483495, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483495, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8483495_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2987 _apply_intervals: intervals per_game count=11 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020176 df_game_rows=269 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=11 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=13 team_for_game=NJD _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=13 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020288 df_game_rows=291 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=9 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=11 team_for_game=NJD _apply_intervals: game 2025020395 df_game_rows=282 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=13 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 455 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477996, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 21 28 26 24 8 5 15 19 7 4 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477996, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477996, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8477996_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6551 _apply_intervals: intervals per_game count=24 _apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025010082 df_game_rows=210 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020026 df_game_rows=284 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020098 df_game_rows=291 _apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020108 df_game_rows=274 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=27 team_for_game=NJD _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020176 df_game_rows=269 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=10 team_for_game=NJD _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020309 df_game_rows=250 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020339 df_game_rows=289 _apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025020354 df_game_rows=300 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=26 team_for_game=NJD _apply_intervals: game 2025020395 df_game_rows=282 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1607 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476462, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 26 24 8 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476462, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476462, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8476462_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7608 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025010082 df_game_rows=210 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020026 df_game_rows=284 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020098 df_game_rows=291 _apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020108 df_game_rows=274 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020176 df_game_rows=269 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020252 df_game_rows=238 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020288 df_game_rows=291 _apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020309 df_game_rows=250 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020339 df_game_rows=289 _apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020354 df_game_rows=300 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020395 df_game_rows=282 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1579 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479407, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 26 24 8 5 2 16 15 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479407, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479407, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8479407_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 2460 _apply_intervals: intervals per_game count=9 _apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=12 team_for_game=NJD _apply_intervals: game 2025010082 df_game_rows=210 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020026 df_game_rows=284 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020098 df_game_rows=291 _apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020108 df_game_rows=274 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 Filtered season dataframe to 521 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477488, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477488, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477488, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8477488_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7880 _apply_intervals: intervals per_game count=29 _apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025010082 df_game_rows=210 _apply_intervals: game 2025010094 rows_in_game=272 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025010094 df_game_rows=272 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020026 df_game_rows=284 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020098 df_game_rows=291 _apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020108 df_game_rows=274 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020176 df_game_rows=269 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020252 df_game_rows=238 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020288 df_game_rows=291 _apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020309 df_game_rows=250 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020339 df_game_rows=289 _apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020354 df_game_rows=300 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020395 df_game_rows=282 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1623 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481721, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 3 4 12 14 29 10 30 28 21 26 24 8 5 2 16 15 13 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481721, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481721, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8481721_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5682 _apply_intervals: intervals per_game count=21 _apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=11 team_for_game=NJD _apply_intervals: game 2025020108 df_game_rows=274 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=9 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=12 team_for_game=NJD _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020176 df_game_rows=269 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020252 df_game_rows=238 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020288 df_game_rows=291 _apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020309 df_game_rows=250 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020339 df_game_rows=289 _apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020354 df_game_rows=300 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=12 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=12 team_for_game=NJD _apply_intervals: game 2025020395 df_game_rows=282 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=12 team_for_game=NJD _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 890 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476474, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 30 28 21 26 24 8 5 2 16 15 14 13 4 17 19 7 29 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476474, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476474, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8476474_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7608 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025010082 df_game_rows=210 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020026 df_game_rows=284 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=13 team_for_game=NJD _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020098 df_game_rows=291 _apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020108 df_game_rows=274 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020176 df_game_rows=269 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020252 df_game_rows=238 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020288 df_game_rows=291 _apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020309 df_game_rows=250 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020339 df_game_rows=289 _apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020354 df_game_rows=300 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020395 df_game_rows=282 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1531 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482110, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 26 24 8 5 2 16 15 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482110, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482110, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8482110_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7608 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025010082 df_game_rows=210 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020026 df_game_rows=284 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020098 df_game_rows=291 _apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020108 df_game_rows=274 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020176 df_game_rows=269 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020252 df_game_rows=238 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=28 team_for_game=NJD _apply_intervals: game 2025020288 df_game_rows=291 _apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020309 df_game_rows=250 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020339 df_game_rows=289 _apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020354 df_game_rows=300 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020395 df_game_rows=282 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=12 team_for_game=NJD _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1768 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475455, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 26 24 8 5 2 16 15 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475455, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475455, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8475455_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6735 _apply_intervals: intervals per_game count=25 _apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025010082 df_game_rows=210 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020098 df_game_rows=291 _apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020108 df_game_rows=274 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=26 team_for_game=NJD _apply_intervals: game 2025020176 df_game_rows=269 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=27 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020252 df_game_rows=238 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020288 df_game_rows=291 _apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020309 df_game_rows=250 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020339 df_game_rows=289 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=26 team_for_game=NJD _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020395 df_game_rows=282 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1735 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478399, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 29 10 30 28 21 26 24 8 5 2 16 15 14 13 4 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478399, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478399, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8478399_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1639 _apply_intervals: intervals per_game count=6 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=11 team_for_game=NJD _apply_intervals: game 2025020108 df_game_rows=274 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=10 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=12 team_for_game=NJD _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=10 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 Filtered season dataframe to 108 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483531, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 30 28 21 26] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483531, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483531, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8483531_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7608 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025010082 df_game_rows=210 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020026 df_game_rows=284 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020098 df_game_rows=291 _apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020108 df_game_rows=274 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020176 df_game_rows=269 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020252 df_game_rows=238 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025020288 df_game_rows=291 _apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020309 df_game_rows=250 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020339 df_game_rows=289 _apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020354 df_game_rows=300 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020395 df_game_rows=282 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1776 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478414, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 26 24 8 5 2 16 15 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478414, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478414, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8478414_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5487 _apply_intervals: intervals per_game count=20 _apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025010082 df_game_rows=210 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020026 df_game_rows=284 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020098 df_game_rows=291 _apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020108 df_game_rows=274 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020176 df_game_rows=269 _apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020309 df_game_rows=250 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020339 df_game_rows=289 _apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020354 df_game_rows=300 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 1028 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477015, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477015, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477015, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8477015_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7398 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=26 team_for_game=NJD _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020026 df_game_rows=284 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=21 team_for_game=NJD _apply_intervals: game 2025020098 df_game_rows=291 _apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020108 df_game_rows=274 _apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020124 df_game_rows=260 _apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020140 df_game_rows=285 _apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=26 team_for_game=NJD _apply_intervals: game 2025020161 df_game_rows=301 _apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025020176 df_game_rows=269 _apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020191 df_game_rows=277 _apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020197 df_game_rows=268 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020252 df_game_rows=238 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=27 team_for_game=NJD _apply_intervals: game 2025020288 df_game_rows=291 _apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020309 df_game_rows=250 _apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025020323 df_game_rows=245 _apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025020339 df_game_rows=289 _apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020354 df_game_rows=300 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=22 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=25 team_for_game=NJD _apply_intervals: game 2025020395 df_game_rows=282 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=24 team_for_game=NJD _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=23 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 2155 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482684, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 12 14 29 10 30 28 21 26 24 8 5 2 16 15 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482684, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482684, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8482684_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 1889 _apply_intervals: intervals per_game count=7 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020252 df_game_rows=238 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020288 df_game_rows=291 _apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020354 df_game_rows=300 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020395 df_game_rows=282 Filtered season dataframe to 327 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478841, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 5 1 2 16 15 17 19 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478841, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478841, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8478841_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4599 _apply_intervals: intervals per_game count=17 _apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025010082 df_game_rows=210 _apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020014 df_game_rows=309 _apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020026 df_game_rows=284 _apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020045 df_game_rows=289 _apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD _apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=14 team_for_game=NJD _apply_intervals: game 2025020098 df_game_rows=291 _apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020220 df_game_rows=237 _apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020231 df_game_rows=263 _apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=18 team_for_game=NJD _apply_intervals: game 2025020252 df_game_rows=238 _apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=7 team_for_game=NJD _apply_intervals: game 2025020268 df_game_rows=265 _apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=15 team_for_game=NJD _apply_intervals: game 2025020354 df_game_rows=300 _apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020364 df_game_rows=250 _apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=20 team_for_game=NJD _apply_intervals: game 2025020379 df_game_rows=289 _apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=19 team_for_game=NJD _apply_intervals: game 2025020395 df_game_rows=282 _apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=17 team_for_game=NJD _apply_intervals: game 2025020406 df_game_rows=289 _apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=16 team_for_game=NJD _apply_intervals: game 2025020421 df_game_rows=260 Filtered season dataframe to 695 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479996, 'team': 'NJD'} team='NJD' DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 8 5 2 16 17 19 7 4 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479996, 'team': 'NJD'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479996, 'team': 'NJD'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NJD/8479996_map.png players: Saved stats to analysis/players/20252026/NJD/player_stats.csv players: Scatter plot includes 23 players (min_games=5) players: Saved scatter plot to analysis/players/20252026/NJD/player_scatter.png players: Analysis complete. Processing NSH (Plotting)... Generating maps for 2 players (skipped 21 up-to-date). players: Starting analysis. Scope=season, Team=NSH, Condition={'game_state': ['5v5'], 'is_net_empty': [0]} DEBUG: analyze.players called INFO:root:Loaded cached shifts for game 2025020032 from data/20252026/shifts/shifts_2025020032.pkl INFO:root:Loaded cached shifts for game 2025020041 from data/20252026/shifts/shifts_2025020041.pkl INFO:root:Loaded cached shifts for game 2025020049 from data/20252026/shifts/shifts_2025020049.pkl INFO:root:Loaded cached shifts for game 2025020118 from data/20252026/shifts/shifts_2025020118.pkl INFO:root:Loaded cached shifts for game 2025020156 from data/20252026/shifts/shifts_2025020156.pkl INFO:root:Loaded cached shifts for game 2025020170 from data/20252026/shifts/shifts_2025020170.pkl INFO:root:Loaded cached shifts for game 2025020201 from data/20252026/shifts/shifts_2025020201.pkl INFO:root:Loaded cached shifts for game 2025020223 from data/20252026/shifts/shifts_2025020223.pkl INFO:root:Loaded cached shifts for game 2025020253 from data/20252026/shifts/shifts_2025020253.pkl INFO:root:Loaded cached shifts for game 2025020281 from data/20252026/shifts/shifts_2025020281.pkl INFO:root:Loaded cached shifts for game 2025020296 from data/20252026/shifts/shifts_2025020296.pkl INFO:root:Loaded cached shifts for game 2025020361 from data/20252026/shifts/shifts_2025020361.pkl INFO:root:Loaded cached shifts for game 2025020397 from data/20252026/shifts/shifts_2025020397.pkl players: Ensuring xG predictions... players: Found 25 players for team NSH players: Loading league baseline... players: Using baseline path: analysis/league/20252026/5v5 league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy players: Analyzing 26 players... xgs_map: using provided DataFrame (in-memory) -> rows= 6807 _apply_intervals: intervals per_game count=25 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020032 df_game_rows=289 _apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020041 df_game_rows=306 _apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020049 df_game_rows=283 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020118 df_game_rows=260 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020156 df_game_rows=253 _apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020170 df_game_rows=262 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020201 df_game_rows=299 _apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020223 df_game_rows=284 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020253 df_game_rows=258 _apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020281 df_game_rows=232 _apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020296 df_game_rows=249 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020361 df_game_rows=280 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=9 team_for_game=NSH _apply_intervals: game 2025020397 df_game_rows=279 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1228 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477446, 'team': 'NSH'} team='NSH' DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 26 25 14 4 20 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477446, 'team': 'NSH'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477446, 'team': 'NSH'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) INFO:root:Loaded cached shifts for game 2025020084 from data/20252026/shifts/shifts_2025020084.pkl INFO:root:Loaded cached shifts for game 2025020208 from data/20252026/shifts/shifts_2025020208.pkl Saved plot to analysis/players/20252026/NSH/8477446_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5210 _apply_intervals: intervals per_game count=19 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020032 df_game_rows=289 _apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020041 df_game_rows=306 _apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020049 df_game_rows=283 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020118 df_game_rows=260 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020201 df_game_rows=299 _apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020208 df_game_rows=277 _apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020223 df_game_rows=284 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020253 df_game_rows=258 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020397 df_game_rows=279 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020416 df_game_rows=281 Filtered season dataframe to 832 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479370, 'team': 'NSH'} team='NSH' DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 25 30 4 3 21 13 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479370, 'team': 'NSH'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479370, 'team': 'NSH'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NSH/8479370_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 3587 _apply_intervals: intervals per_game count=13 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020032 df_game_rows=289 _apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020041 df_game_rows=306 _apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020049 df_game_rows=283 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020118 df_game_rows=260 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020156 df_game_rows=253 _apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020170 df_game_rows=262 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=2 team_for_game=NSH _apply_intervals: game 2025020183 df_game_rows=266 Filtered season dataframe to 555 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482062, 'team': 'NSH'} team='NSH' DEBUG: xgs_map df_filtered unique teams: [29 18 68 9 10 24 23 26 25 14 4 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482062, 'team': 'NSH'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482062, 'team': 'NSH'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NSH/8482062_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5416 _apply_intervals: intervals per_game count=20 _apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020118 df_game_rows=260 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=11 team_for_game=NSH _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020156 df_game_rows=253 _apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020170 df_game_rows=262 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=9 team_for_game=NSH _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020201 df_game_rows=299 _apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020208 df_game_rows=277 _apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020223 df_game_rows=284 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=11 team_for_game=NSH _apply_intervals: game 2025020253 df_game_rows=258 _apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020281 df_game_rows=232 _apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020296 df_game_rows=249 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=10 team_for_game=NSH _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=9 team_for_game=NSH _apply_intervals: game 2025020361 df_game_rows=280 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020397 df_game_rows=279 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=10 team_for_game=NSH _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=10 team_for_game=NSH _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 909 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484241, 'team': 'NSH'} team='NSH' DEBUG: xgs_map df_filtered unique teams: [18 23 26 25 14 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484241, 'team': 'NSH'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484241, 'team': 'NSH'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NSH/8484241_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7374 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020032 df_game_rows=289 _apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020041 df_game_rows=306 _apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020049 df_game_rows=283 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020118 df_game_rows=260 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020170 df_game_rows=262 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020201 df_game_rows=299 _apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020208 df_game_rows=277 _apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020223 df_game_rows=284 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020253 df_game_rows=258 _apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=22 team_for_game=NSH _apply_intervals: game 2025020281 df_game_rows=232 _apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020296 df_game_rows=249 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020361 df_game_rows=280 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020397 df_game_rows=279 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1421 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475158, 'team': 'NSH'} team='NSH' DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 26 25 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475158, 'team': 'NSH'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475158, 'team': 'NSH'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NSH/8475158_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7321 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=21 team_for_game=NSH _apply_intervals: game 2025020032 df_game_rows=289 _apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=21 team_for_game=NSH _apply_intervals: game 2025020049 df_game_rows=283 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020118 df_game_rows=260 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020156 df_game_rows=253 _apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020170 df_game_rows=262 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020201 df_game_rows=299 _apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020208 df_game_rows=277 _apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020223 df_game_rows=284 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020253 df_game_rows=258 _apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020281 df_game_rows=232 _apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020296 df_game_rows=249 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020361 df_game_rows=280 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020397 df_game_rows=279 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1319 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475287, 'team': 'NSH'} team='NSH' DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 10 24 23 26 25 14 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475287, 'team': 'NSH'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475287, 'team': 'NSH'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NSH/8475287_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7627 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=21 team_for_game=NSH _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=21 team_for_game=NSH _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020032 df_game_rows=289 _apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020041 df_game_rows=306 _apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=24 team_for_game=NSH _apply_intervals: game 2025020049 df_game_rows=283 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020118 df_game_rows=260 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=21 team_for_game=NSH _apply_intervals: game 2025020156 df_game_rows=253 _apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020170 df_game_rows=262 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020201 df_game_rows=299 _apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020208 df_game_rows=277 _apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020223 df_game_rows=284 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020253 df_game_rows=258 _apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=23 team_for_game=NSH _apply_intervals: game 2025020281 df_game_rows=232 _apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020296 df_game_rows=249 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=21 team_for_game=NSH _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=11 team_for_game=NSH _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020361 df_game_rows=280 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020397 df_game_rows=279 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1466 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481056, 'team': 'NSH'} team='NSH' DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 26 25 14 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481056, 'team': 'NSH'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481056, 'team': 'NSH'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NSH/8481056_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4642 _apply_intervals: intervals per_game count=17 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=24 team_for_game=NSH _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=23 team_for_game=NSH _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020032 df_game_rows=289 _apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=22 team_for_game=NSH _apply_intervals: game 2025020041 df_game_rows=306 _apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=26 team_for_game=NSH _apply_intervals: game 2025020049 df_game_rows=283 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=25 team_for_game=NSH _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=23 team_for_game=NSH _apply_intervals: game 2025020118 df_game_rows=260 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=25 team_for_game=NSH _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020253 df_game_rows=258 _apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020281 df_game_rows=232 _apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020296 df_game_rows=249 _apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020361 df_game_rows=280 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 982 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482482, 'team': 'NSH'} team='NSH' DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 26 25 3 5 17 20 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482482, 'team': 'NSH'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482482, 'team': 'NSH'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NSH/8482482_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5696 _apply_intervals: intervals per_game count=21 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020049 df_game_rows=283 _apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=10 team_for_game=NSH _apply_intervals: game 2025020118 df_game_rows=260 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020156 df_game_rows=253 _apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020170 df_game_rows=262 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020201 df_game_rows=299 _apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020208 df_game_rows=277 _apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020223 df_game_rows=284 _apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020281 df_game_rows=232 _apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020296 df_game_rows=249 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020361 df_game_rows=280 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=11 team_for_game=NSH _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020397 df_game_rows=279 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020416 df_game_rows=281 Filtered season dataframe to 970 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482103, 'team': 'NSH'} team='NSH' DEBUG: xgs_map df_filtered unique teams: [12 18 10 24 23 26 25 14 4 20 30 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482103, 'team': 'NSH'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482103, 'team': 'NSH'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NSH/8482103_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 5410 _apply_intervals: intervals per_game count=20 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=23 team_for_game=NSH _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=22 team_for_game=NSH _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020032 df_game_rows=289 _apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=22 team_for_game=NSH _apply_intervals: game 2025020041 df_game_rows=306 _apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=23 team_for_game=NSH _apply_intervals: game 2025020049 df_game_rows=283 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020118 df_game_rows=260 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=23 team_for_game=NSH _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=22 team_for_game=NSH _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020156 df_game_rows=253 _apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020170 df_game_rows=262 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020201 df_game_rows=299 _apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=21 team_for_game=NSH _apply_intervals: game 2025020208 df_game_rows=277 _apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020223 df_game_rows=284 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020281 df_game_rows=232 _apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020296 df_game_rows=249 Filtered season dataframe to 1073 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482111, 'team': 'NSH'} team='NSH' DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 26 25 14 4 20 30 5] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482111, 'team': 'NSH'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482111, 'team': 'NSH'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NSH/8482111_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7385 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020032 df_game_rows=289 _apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020041 df_game_rows=306 _apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020049 df_game_rows=283 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020118 df_game_rows=260 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020156 df_game_rows=253 _apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020170 df_game_rows=262 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020201 df_game_rows=299 _apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020208 df_game_rows=277 _apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020223 df_game_rows=284 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020253 df_game_rows=258 _apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=22 team_for_game=NSH _apply_intervals: game 2025020281 df_game_rows=232 _apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=21 team_for_game=NSH _apply_intervals: game 2025020296 df_game_rows=249 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020361 df_game_rows=280 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020397 df_game_rows=279 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1299 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474564, 'team': 'NSH'} team='NSH' DEBUG: xgs_map df_filtered unique teams: [29 18 68 9 10 24 23 26 25 14 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474564, 'team': 'NSH'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474564, 'team': 'NSH'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NSH/8474564_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7627 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=24 team_for_game=NSH _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=24 team_for_game=NSH _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=23 team_for_game=NSH _apply_intervals: game 2025020032 df_game_rows=289 _apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=24 team_for_game=NSH _apply_intervals: game 2025020041 df_game_rows=306 _apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=23 team_for_game=NSH _apply_intervals: game 2025020049 df_game_rows=283 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=22 team_for_game=NSH _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=25 team_for_game=NSH _apply_intervals: game 2025020118 df_game_rows=260 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=22 team_for_game=NSH _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=25 team_for_game=NSH _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=22 team_for_game=NSH _apply_intervals: game 2025020156 df_game_rows=253 _apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=22 team_for_game=NSH _apply_intervals: game 2025020170 df_game_rows=262 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=22 team_for_game=NSH _apply_intervals: game 2025020201 df_game_rows=299 _apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=24 team_for_game=NSH _apply_intervals: game 2025020208 df_game_rows=277 _apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=25 team_for_game=NSH _apply_intervals: game 2025020223 df_game_rows=284 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=21 team_for_game=NSH _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020253 df_game_rows=258 _apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=24 team_for_game=NSH _apply_intervals: game 2025020281 df_game_rows=232 _apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=22 team_for_game=NSH _apply_intervals: game 2025020296 df_game_rows=249 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=24 team_for_game=NSH _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=21 team_for_game=NSH _apply_intervals: game 2025020361 df_game_rows=280 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=26 team_for_game=NSH _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020397 df_game_rows=279 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1847 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476869, 'team': 'NSH'} team='NSH' DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 26 25 14 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476869, 'team': 'NSH'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476869, 'team': 'NSH'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NSH/8476869_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 6574 _apply_intervals: intervals per_game count=24 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020032 df_game_rows=289 _apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020041 df_game_rows=306 _apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020049 df_game_rows=283 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020118 df_game_rows=260 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=11 team_for_game=NSH _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020170 df_game_rows=262 _apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020201 df_game_rows=299 _apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=11 team_for_game=NSH _apply_intervals: game 2025020208 df_game_rows=277 _apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020223 df_game_rows=284 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020281 df_game_rows=232 _apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020296 df_game_rows=249 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020361 df_game_rows=280 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020397 df_game_rows=279 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1028 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482768, 'team': 'NSH'} team='NSH' DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 26 4 30 25 5 21 13 17 16 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482768, 'team': 'NSH'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482768, 'team': 'NSH'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NSH/8482768_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7627 _apply_intervals: intervals per_game count=28 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020032 df_game_rows=289 _apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020041 df_game_rows=306 _apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020049 df_game_rows=283 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020118 df_game_rows=260 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020156 df_game_rows=253 _apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020170 df_game_rows=262 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=21 team_for_game=NSH _apply_intervals: game 2025020201 df_game_rows=299 _apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020208 df_game_rows=277 _apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020223 df_game_rows=284 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020253 df_game_rows=258 _apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=24 team_for_game=NSH _apply_intervals: game 2025020281 df_game_rows=232 _apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=21 team_for_game=NSH _apply_intervals: game 2025020296 df_game_rows=249 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=22 team_for_game=NSH _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=24 team_for_game=NSH _apply_intervals: game 2025020361 df_game_rows=280 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020397 df_game_rows=279 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1576 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476887, 'team': 'NSH'} team='NSH' DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 26 25 14 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476887, 'team': 'NSH'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476887, 'team': 'NSH'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NSH/8476887_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7344 _apply_intervals: intervals per_game count=27 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020032 df_game_rows=289 _apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020041 df_game_rows=306 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020118 df_game_rows=260 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020156 df_game_rows=253 _apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020170 df_game_rows=262 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020201 df_game_rows=299 _apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020208 df_game_rows=277 _apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020223 df_game_rows=284 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020253 df_game_rows=258 _apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020281 df_game_rows=232 _apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020296 df_game_rows=249 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020361 df_game_rows=280 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020397 df_game_rows=279 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1297 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478047, 'team': 'NSH'} team='NSH' DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 24 23 26 25 14 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478047, 'team': 'NSH'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478047, 'team': 'NSH'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NSH/8478047_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 7076 _apply_intervals: intervals per_game count=26 _apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020032 df_game_rows=289 _apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020041 df_game_rows=306 _apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020049 df_game_rows=283 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020118 df_game_rows=260 _apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020137 df_game_rows=301 _apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=13 team_for_game=NSH _apply_intervals: game 2025020145 df_game_rows=276 _apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=12 team_for_game=NSH _apply_intervals: game 2025020156 df_game_rows=253 _apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020170 df_game_rows=262 _apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=14 team_for_game=NSH _apply_intervals: game 2025020183 df_game_rows=266 _apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020201 df_game_rows=299 _apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020208 df_game_rows=277 _apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020223 df_game_rows=284 _apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020233 df_game_rows=240 _apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020253 df_game_rows=258 _apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=21 team_for_game=NSH _apply_intervals: game 2025020281 df_game_rows=232 _apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020296 df_game_rows=249 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=22 team_for_game=NSH _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=16 team_for_game=NSH _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020361 df_game_rows=280 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=15 team_for_game=NSH _apply_intervals: game 2025020397 df_game_rows=279 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=NSH _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1222 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482146, 'team': 'NSH'} team='NSH' DEBUG: xgs_map df_filtered unique teams: [68 18 9 10 24 23 26 25 14 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482146, 'team': 'NSH'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482146, 'team': 'NSH'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) Saved plot to analysis/players/20252026/NSH/8482146_map.png xgs_map: using provided DataFrame (in-memory) -> rows= 4430 _apply_intervals: intervals per_game count=16 _apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=25 team_for_game=NSH _apply_intervals: game 2025010091 df_game_rows=242 _apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=23 team_for_game=NSH _apply_intervals: game 2025020016 df_game_rows=309 _apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=21 team_for_game=NSH _apply_intervals: game 2025020032 df_game_rows=289 _apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=24 team_for_game=NSH _apply_intervals: game 2025020041 df_game_rows=306 _apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=24 team_for_game=NSH _apply_intervals: game 2025020049 df_game_rows=283 _apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH _apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=25 team_for_game=NSH _apply_intervals: game 2025020105 df_game_rows=285 _apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=18 team_for_game=NSH _apply_intervals: game 2025020118 df_game_rows=260 _apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=21 team_for_game=NSH _apply_intervals: game 2025020343 df_game_rows=271 _apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=24 team_for_game=NSH _apply_intervals: game 2025020357 df_game_rows=274 _apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=24 team_for_game=NSH _apply_intervals: game 2025020361 df_game_rows=280 _apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=24 team_for_game=NSH _apply_intervals: game 2025020389 df_game_rows=280 _apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=23 team_for_game=NSH _apply_intervals: game 2025020397 df_game_rows=279 _apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=20 team_for_game=NSH _apply_intervals: game 2025020416 df_game_rows=281 _apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=19 team_for_game=NSH _apply_intervals: game 2025020429 df_game_rows=294 Filtered season dataframe to 1098 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474600, 'team': 'NSH'} team='NSH' DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 21 13 17 16 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474600, 'team': 'NSH'}) DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474600, 'team': 'NSH'} /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7) /home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future. h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)