pyg-nightly 2.7.0.dev20250501__py3-none-any.whl → 2.7.0.dev20250503__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyg-nightly
3
- Version: 2.7.0.dev20250501
3
+ Version: 2.7.0.dev20250503
4
4
  Summary: Graph Neural Network Library for PyTorch
5
5
  Keywords: deep-learning,pytorch,geometric-deep-learning,graph-neural-networks,graph-convolutional-networks
6
6
  Author-email: Matthias Fey <matthias@pyg.org>
@@ -1,4 +1,4 @@
1
- torch_geometric/__init__.py,sha256=qGS1wDoGbtxeynNNPgsI3J5OQkZYLT6Gdv7y5YuygC0,1978
1
+ torch_geometric/__init__.py,sha256=7-kRFlFE2mKwcE63U1WfLrdpWzeEUPwnCS7OSAltLWA,1978
2
2
  torch_geometric/_compile.py,sha256=f-WQeH4VLi5Hn9lrgztFUCSrN_FImjhQa6BxFzcYC38,1338
3
3
  torch_geometric/_onnx.py,sha256=V9ffrIKSqhDw6xUZ12lkuSfNs48cQp2EeJ6Z19GfnVw,349
4
4
  torch_geometric/backend.py,sha256=lVaf7aLoVaB3M-UcByUJ1G4T4FOK6LXAg0CF4W3E8jo,1575
@@ -19,7 +19,7 @@ torch_geometric/logging.py,sha256=HmHHLiCcM64k-6UYNOSfXPIeSGNAyiGGcn8cD8tlyuQ,85
19
19
  torch_geometric/resolver.py,sha256=fn-_6mCpI2xv7eDZnIFcYrHOn0IrwbkWFLDb9laQrWI,1270
20
20
  torch_geometric/seed.py,sha256=MJLbVwpb9i8mK3oi32sS__Cq-dRq_afTeoOL_HoA9ko,372
21
21
  torch_geometric/template.py,sha256=rqjDWgcSAgTCiV4bkOjWRPaO4PpUdC_RXigzxxBqAu8,1060
22
- torch_geometric/typing.py,sha256=mtSM6QhCsrohstnyvqMuxEIajCkhcvkQKOU4uVu-nDs,15596
22
+ torch_geometric/typing.py,sha256=bUIcBMcvDGn3DV1p6VFvkQ64fCB3mO2SNrlFxCoKCkc,15624
23
23
  torch_geometric/warnings.py,sha256=t114CbkrmiqkXaavx5g7OO52dLdktf-U__B5QqYIQvI,413
24
24
  torch_geometric/contrib/__init__.py,sha256=0pWkmXfZtbdr-AKwlii5LTFggTEH-MCrSKpZxrtPlVs,352
25
25
  torch_geometric/contrib/datasets/__init__.py,sha256=lrGnWsEiJf5zsBRmshGZZFN_uYR2ezDjbj9n9nCpvtk,23
@@ -31,7 +31,7 @@ torch_geometric/contrib/nn/models/__init__.py,sha256=3ia5cX-TPhouLl6jn_HA-Rd2Laa
31
31
  torch_geometric/contrib/nn/models/rbcd_attack.py,sha256=qcyxBxAbx8LKzpp3RoJQ0cxl9aB2onsWT4oY1fsM7us,33280
32
32
  torch_geometric/contrib/transforms/__init__.py,sha256=lrGnWsEiJf5zsBRmshGZZFN_uYR2ezDjbj9n9nCpvtk,23
33
33
  torch_geometric/data/__init__.py,sha256=D6Iz5A9vEb_2rpf96Zn7uM-lchZ3WpW8X7WdAD1yxKw,4565
34
- torch_geometric/data/batch.py,sha256=C9cT7-rcWPgnG68Eb_uAcn90HS3OvOG6n4fY3ihpFhI,8764
34
+ torch_geometric/data/batch.py,sha256=8X8CN4_1rjrh48R3R2--mZUgfsO7Po9JP-H6SbrBiBA,8740
35
35
  torch_geometric/data/collate.py,sha256=RRiUMBLxDAitaHx7zF0qiMR2nW1NY_0uaNdxlUo5-bo,12756
36
36
  torch_geometric/data/data.py,sha256=mp_jsjsaVwUcY-FghlqNZTHUQEKBdi7xWR_oA2ewrD4,43821
37
37
  torch_geometric/data/database.py,sha256=VTct1xyzXsK0GZahBV9-noviCzjRteAsKMG7VgJ52n0,22998
@@ -44,7 +44,7 @@ torch_geometric/data/graph_store.py,sha256=EtIgsyY7RdBHRTCn34VypEBOG8cg8WzsNT_kT
44
44
  torch_geometric/data/hetero_data.py,sha256=IunNWq2cRDox-imtc7w3yxjLI4KfUGXkmk6wddGGnZ0,48601
45
45
  torch_geometric/data/hypergraph_data.py,sha256=33hsXW25Yz4Ju8mKajYinZOrkqrUi1SqThG7MlOOYNM,8294
46
46
  torch_geometric/data/in_memory_dataset.py,sha256=F35hU9Dw3qiJUL5E1CCAfq-1xrlUMstXBmQVEQdtJ1I,13403
47
- torch_geometric/data/large_graph_indexer.py,sha256=3mF2c7BLbnAg8h5mBaG95_lyQMiXJ_uhEe5bXbX7e1M,25430
47
+ torch_geometric/data/large_graph_indexer.py,sha256=jSB3St2jT4GUKvmeyr7Hu1ozGk9AQey32Z0XFnkSf4M,25454
48
48
  torch_geometric/data/makedirs.py,sha256=6uOv4y34i947cm4rv7Aj2_YZBq-EOsyPKnlGA188YSw,463
49
49
  torch_geometric/data/on_disk_dataset.py,sha256=77om-e6kzcpBb77kf7um1xY8-yHmQaao_6R7I-3NwHk,6629
50
50
  torch_geometric/data/remote_backend_utils.py,sha256=Rzpq1PczXuHhUscrFtIAL6dua6pMehSJlXG7yEsrrrg,4503
@@ -55,7 +55,7 @@ torch_geometric/data/temporal.py,sha256=WOJ6gFrTLikaLhUvotyUF5ql14FkE5Ox3hNkdSp6
55
55
  torch_geometric/data/view.py,sha256=XjkVSc-UWZFCT4DlXLShZtO8duhFQkS9gq88zZXANsk,1089
56
56
  torch_geometric/data/lightning/__init__.py,sha256=w3En1tJfy3kSqe1MycpOyZpHFO3fxBCgNCUOznPA3YU,178
57
57
  torch_geometric/data/lightning/datamodule.py,sha256=Bn9iaIfE4NWDDWWMqCvBeZ4bIW1Silx_Ol5CPJCliaQ,29242
58
- torch_geometric/datasets/__init__.py,sha256=d9nuTCytBvg60lm_WYRAQwjoZxR1H_7JsW8een1k1No,6186
58
+ torch_geometric/datasets/__init__.py,sha256=fgJgc2wztjTJKczuHwXH7L0CgCXw69o_Dtm1KnleMCY,6235
59
59
  torch_geometric/datasets/actor.py,sha256=oUxgJIX8bi5hJr1etWNYIFyVQNDDXi1nyVpHGGMEAGQ,4304
60
60
  torch_geometric/datasets/airfrans.py,sha256=212gYsk7PvF-qcmvM2YXaOBhFrS79evAGg_sPHXih4w,5439
61
61
  torch_geometric/datasets/airports.py,sha256=b3gkv3gY2JkUpmGiz36Z-g7EcnSfU8lBG1YsCOWdJ6k,3758
@@ -71,6 +71,7 @@ torch_geometric/datasets/ba_shapes.py,sha256=sJEQiK3CGlYTdbQBgKeLhO6mY-HRv3nS9Ya
71
71
  torch_geometric/datasets/bitcoin_otc.py,sha256=olrsq_Z306-oo17iEQoVif3-CgVIOyVc8twgIMXE0iI,4399
72
72
  torch_geometric/datasets/brca_tgca.py,sha256=2lX9oY6T7aPut8NbXFMWS1c2-_FHqCB4hqUzP4_zFsk,3962
73
73
  torch_geometric/datasets/citation_full.py,sha256=5WT6_iZ1GWuShuYZJErQ3bWNV4bHwZsYYBYztoTxMzs,4458
74
+ torch_geometric/datasets/city.py,sha256=9EFbPDFlEweVYvZL9V4jmuY_wioKTcax0YxeisZbis4,5138
74
75
  torch_geometric/datasets/coauthor.py,sha256=Nma9aLapDE1S7lCC40WazQZbBJ8nMQV3JJZRci-F3XQ,3138
75
76
  torch_geometric/datasets/coma.py,sha256=4URaPuXdUJdtZbzWojR-BqxlTyykjtvmXptk3G2Uy9k,4734
76
77
  torch_geometric/datasets/cornell.py,sha256=i6wUr2m1U3HCaqMzi-0AZ3Nthdne6_t0ja8qCKYESzE,5311
@@ -181,7 +182,7 @@ torch_geometric/datasets/utils/cheatsheet.py,sha256=M55Bj64cjMVqDNoIq1shUVeU2ngo
181
182
  torch_geometric/distributed/__init__.py,sha256=NNCGXbDTAW5xoJgSr-PK0VYEnT8UCI7SoZXc16fjuxQ,589
182
183
  torch_geometric/distributed/dist_context.py,sha256=n34e2HU-TxmK6DrOpb5lWZu_xg1To1IFrXH4ueF_Jhg,418
183
184
  torch_geometric/distributed/dist_link_neighbor_loader.py,sha256=wM9heZmStrPSW7eo9qWusKdI_lVkDkLlda8ILBqC2c8,4933
184
- torch_geometric/distributed/dist_loader.py,sha256=cDR0VkjjkimI4RL45NsV5p5x3r_b595DzCxBwxcnyrQ,6492
185
+ torch_geometric/distributed/dist_loader.py,sha256=Gjvl5Ck8YrFN6YmCWEFWVqLEwI1hog-rWj2Sk_zqYC0,6504
185
186
  torch_geometric/distributed/dist_neighbor_loader.py,sha256=Zi3obALN_T6vJZI_1pWaRj60u9zEk3W5wo8bEKTbYR8,4372
186
187
  torch_geometric/distributed/dist_neighbor_sampler.py,sha256=YrL-NMFOJwHJpF189o4k6dIugo7J9SANaUVgMc36cmE,42406
187
188
  torch_geometric/distributed/event_loop.py,sha256=wr3iwMYEWOGkBlvC5huD2k5YxisaGE9w1Z-8RcQiIQk,3309
@@ -192,16 +193,16 @@ torch_geometric/distributed/rpc.py,sha256=rJqiVR6Vbb2mpyVSC0Y5tPApqP-b1ck1Uq3IQp
192
193
  torch_geometric/distributed/utils.py,sha256=FGrr3qw7hx7EQaIjjqasurloCFJ9q_0jt8jdSIUjBeM,6567
193
194
  torch_geometric/explain/__init__.py,sha256=pRxVB33zsxhED1StRWdHboQWh3e06__g9N298Hzi42Y,359
194
195
  torch_geometric/explain/config.py,sha256=_0j67NAwPwjrWHPncNywCT-oKyMiryJNxufxVN1BFlM,7834
195
- torch_geometric/explain/explainer.py,sha256=8_NZTmlT4WO9RgKxpSUQRt3rbVwFURF5bSWOPlfOLjA,10667
196
- torch_geometric/explain/explanation.py,sha256=Bt8THLn-CSrvEFisdT9DX9fnOMaqficsChSCI9uhyQw,18873
196
+ torch_geometric/explain/explainer.py,sha256=G7SvraTD25_KZEIP0eQ5QAIuHKodRUF37WOcoAJ921U,10677
197
+ torch_geometric/explain/explanation.py,sha256=5DWNEWhRLptGbnTnMrcugPBHlizUHFlkBx7iwlYo1k4,18883
197
198
  torch_geometric/explain/algorithm/__init__.py,sha256=fE29xbd0bPxg-EfrB2BDmmY9QnyO-7TgvYduGHofm5o,496
198
199
  torch_geometric/explain/algorithm/attention_explainer.py,sha256=65iGLmOt00ERtBDVxAoydIchykdWZU24aXzSzUGzQEI,11304
199
- torch_geometric/explain/algorithm/base.py,sha256=wwJcREUFKDLFUDjRa9o4X3DWqQgMvhS3Iciwb6Evtjc,6922
200
+ torch_geometric/explain/algorithm/base.py,sha256=lXynh9wMAKWN9tuCkcmsmNPwSUExTtgbNl2Nw39NQD0,6942
200
201
  torch_geometric/explain/algorithm/captum.py,sha256=k6hNgC5Kn9lVirOYVJzej8-hRuf5C2mPFUXFLd2wWsY,12857
201
202
  torch_geometric/explain/algorithm/captum_explainer.py,sha256=oz-c40hvdzii4_chEQPHzQo_dFjHr9HLuJhDLsqRIVU,7346
202
203
  torch_geometric/explain/algorithm/dummy_explainer.py,sha256=jvcVQmfngmUWgoKa5p7CXzju2HM5D5DfieJhZW3gbLc,2872
203
204
  torch_geometric/explain/algorithm/gnn_explainer.py,sha256=iu45fGWdd4c6wNczWEAT-29HCAz7ncuoaS6cpx-xDJM,24660
204
- torch_geometric/explain/algorithm/graphmask_explainer.py,sha256=T2B081dK-JSpaQmutnkQd5xF3JF49_dPZCOgwqIKJDk,21367
205
+ torch_geometric/explain/algorithm/graphmask_explainer.py,sha256=6DisYN-dz2vhr1AlTPBIq6xSmpDdaNu306JKeLObNVI,21377
205
206
  torch_geometric/explain/algorithm/pg_explainer.py,sha256=LMlNcqSqtEP-IzYA7Xix6FoAogcrLUaEUAxDVyz2eyc,20162
206
207
  torch_geometric/explain/algorithm/utils.py,sha256=eh0ARPG41V7piVw5jdMYpV0p7WjTlpehnY-bWqPV_zg,2564
207
208
  torch_geometric/explain/metric/__init__.py,sha256=swLeuWVaM3K7UvowsH7q3BzfTq_W1vhcFY8nEP7vFPQ,301
@@ -278,7 +279,7 @@ torch_geometric/loader/ibmb_loader.py,sha256=11sg918nIbybr2hoFEO-HA1wYNkL6GFMK9y
278
279
  torch_geometric/loader/imbalanced_sampler.py,sha256=clPERglHRk5SyeFevDrgezYFl7ir975OVFMyJwOV090,3754
279
280
  torch_geometric/loader/link_loader.py,sha256=xX9C6c3K5oWAcjMygeDOdxv1mzkP8ePideehsLaDu-w,16207
280
281
  torch_geometric/loader/link_neighbor_loader.py,sha256=CWv1lO_1Anml8kB60-WG4m_AK1rvqP1jwROV6tHWivo,14383
281
- torch_geometric/loader/mixin.py,sha256=R4pWv18hDADa-v1u9xGD8U4DzW_B1i9Fu4LywZLK16Y,10922
282
+ torch_geometric/loader/mixin.py,sha256=XX2tIXoFj0dYexUiUhTfVCXAQyL63fpk5bS5FqkXo5U,10946
282
283
  torch_geometric/loader/neighbor_loader.py,sha256=vnLn_RhBKTux5h8pi0vzj0d7JPoOpLA3n3vjyIWv9lo,12452
283
284
  torch_geometric/loader/neighbor_sampler.py,sha256=mraVFXIIGctYot4Xr2VOAhCKAOQyW2gP9KROf7g6tcc,8497
284
285
  torch_geometric/loader/node_loader.py,sha256=g_kV5N0tO6eMSFPc5fdbzfHr4COAeKVJi7FEq52f4zc,11848
@@ -312,7 +313,7 @@ torch_geometric/nn/to_hetero_transformer.py,sha256=YS4gFOhnMuDstFTPvR18FDyXNaTxx
312
313
  torch_geometric/nn/to_hetero_with_bases_transformer.py,sha256=ErWnsgYYHlQgzwdg0eUlgR6fauWPdnddS7XB5ji3OVk,22974
313
314
  torch_geometric/nn/aggr/__init__.py,sha256=_a01GujVyoRSE6-2driodMhC8-jJss4WNIhairYmhHY,1645
314
315
  torch_geometric/nn/aggr/attention.py,sha256=ZaZQijQGDx7Mfsk-kDlxJSCDjN1Vp02YyblR5-3SmnY,2952
315
- torch_geometric/nn/aggr/base.py,sha256=tdGVR8o4hPpeGO_iNkBaAwS0tvCYT2OnToeGU21eW5Q,8218
316
+ torch_geometric/nn/aggr/base.py,sha256=vcWHJlS51mfdYHWmnWEN8b1D57mPM5Y8nqqdVnFm82M,8225
316
317
  torch_geometric/nn/aggr/basic.py,sha256=5CRXpm0VVZb22fMPbMMdqQgh97RYiKiUgZGq3hr7Gbw,11011
317
318
  torch_geometric/nn/aggr/deep_sets.py,sha256=2LSxJJZaWuxRJew-pubmMYc2ynLYWeTyVK47k6OUhq0,2650
318
319
  torch_geometric/nn/aggr/equilibrium.py,sha256=ACGzBR55DeLAeibvGnLH89jCDANn9ET0vDFdgqtzVEs,6639
@@ -372,7 +373,7 @@ torch_geometric/nn/conv/hgt_conv.py,sha256=lUhTWUMovMtn9yR_b2-kLNLqHChGOUl2OtXBY
372
373
  torch_geometric/nn/conv/hypergraph_conv.py,sha256=4BosbbqJyprlI6QjPqIfMxCqnARU_0mUn1zcAQhbw90,8691
373
374
  torch_geometric/nn/conv/le_conv.py,sha256=DonmmYZOKk5wIlTZzzIfNKqBY6MO0MRxYhyr0YtNz-Q,3494
374
375
  torch_geometric/nn/conv/lg_conv.py,sha256=8jMa79iPsOUbXEfBIc3wmbvAD8T3d1j37LeIFTX3Yag,2369
375
- torch_geometric/nn/conv/message_passing.py,sha256=Pt5YPXrjRh8BLx16ItewAsfK-b0TRZPVMhPw_Czpyvk,44346
376
+ torch_geometric/nn/conv/message_passing.py,sha256=ynTp5MlvHB4SFYnuetK4wWi_1Bj_FhDGAJbf6ZmhEqY,44360
376
377
  torch_geometric/nn/conv/mf_conv.py,sha256=SkOGMN1tFT9dcqy8xYowsB2ozw6QfkoArgR1BksZZaU,4340
377
378
  torch_geometric/nn/conv/mixhop_conv.py,sha256=qVDPWeWcnO7_eHM0ZnpKtr8SISjb4jp0xjgpoDrwjlk,4555
378
379
  torch_geometric/nn/conv/nn_conv.py,sha256=X215RSARaJcfI0JOC7K8ybZMq7SoiO_JhJdp9pPRnE8,4759
@@ -511,9 +512,9 @@ torch_geometric/profile/profile.py,sha256=cHCY4U0XtyqyKC5u380q6TspsOZ5tGHNXaZsKu
511
512
  torch_geometric/profile/profiler.py,sha256=rfNciRzWDka_BgO6aPFi3cy8mcT4lSgFWy-WfPgI2SI,16891
512
513
  torch_geometric/profile/utils.py,sha256=7h6vzTzW8vv-ZqMOz2DV8HHNgC9ViOrN7IR9d3BPDZ8,5497
513
514
  torch_geometric/sampler/__init__.py,sha256=0h_xJ7CQnlTxF5hUpc81WPQ0QaBtouG8eKK1RzPGA-s,512
514
- torch_geometric/sampler/base.py,sha256=kT6hYM6losYta3pqLQlqiqboJiujLy6RlH8qM--U_wg,26970
515
+ torch_geometric/sampler/base.py,sha256=glbuSNcI0A_y-O3x29jqQpSSqSWxUDKJk5vM8uVF8Gs,26980
515
516
  torch_geometric/sampler/hgt_sampler.py,sha256=UAm8_wwzEcziKDJ8-TnfZh1705dXRsy_I5PKhZSDTK8,2721
516
- torch_geometric/sampler/neighbor_sampler.py,sha256=MAVphWqNf0-cwlHRvdiU8de86dBxwjm3Miam_6s1ep4,33971
517
+ torch_geometric/sampler/neighbor_sampler.py,sha256=G3pw3IHSAPEVeepiw-vJeWDbQwpEW9jr4-Ms_HjcZCA,34080
517
518
  torch_geometric/sampler/utils.py,sha256=RJtasO6Q7Pp3oYEOWrbf2DEYuSfuKZOsF2I7-eJDnoA,5485
518
519
  torch_geometric/testing/__init__.py,sha256=m3yp_5UnCAxVgzTFofpiVt0vdbl5GwVAve8WTrAaNxo,1319
519
520
  torch_geometric/testing/asserts.py,sha256=DLC9HnBgFWuTIiQs2OalsQcXGhOVG-e6R99IWhkO32c,4606
@@ -620,7 +621,7 @@ torch_geometric/utils/hetero.py,sha256=ok4uAAOyMiaeEPmvyS4DNoDwdKnLS2gmgs5WVVklx
620
621
  torch_geometric/utils/isolated.py,sha256=nUxCfMY3q9IIFjelr4eyAJH4sYG9W3lGdpWidnp3dm4,3588
621
622
  torch_geometric/utils/laplacian.py,sha256=ludDil4yS1A27PEuYOjZtCtE3o-t0lnucJKfiqENhvM,3695
622
623
  torch_geometric/utils/loop.py,sha256=MUWUS7a5GxuxLKlCtRq95U1hc3MndybAhqKD5IAe2RY,23051
623
- torch_geometric/utils/map.py,sha256=9cFjupKxyWT2zVcjDzEAMoV8jDviFJB6siwu9iDlV_E,5919
624
+ torch_geometric/utils/map.py,sha256=Bioo-NrnH2LBcPsnBJEQjLl0hGnoJkIYgfoLd0ffP5Y,5926
624
625
  torch_geometric/utils/mask.py,sha256=WOsfZLOMf1bunlwI6RH3evptbu0eOwNg19t6VOYboIo,2340
625
626
  torch_geometric/utils/mesh_laplacian.py,sha256=dqUEp7sOCBhWZPnUMAqa93OAj30dTDshcUpstt2iZDc,4387
626
627
  torch_geometric/utils/mixin.py,sha256=h4r5acaeEZ2azvwBcUbybevuoyhLE8qLBiERU7V9w20,699
@@ -636,7 +637,7 @@ torch_geometric/utils/undirected.py,sha256=H_nfpI0_WluOG6VfjPyldvcjL4w5USAKWu2x5
636
637
  torch_geometric/visualization/__init__.py,sha256=b-HnVesXjyJ_L1N-DnjiRiRVf7lhwKaBQF_2i5YMVSU,208
637
638
  torch_geometric/visualization/graph.py,sha256=PoI9tjbEXZVkMUg4CvTLbzqtEfzUwMUcsw57DNBEU0s,14311
638
639
  torch_geometric/visualization/influence.py,sha256=CWMvuNA_Nf1sfbJmQgn58yS4OFpeKXeZPe7kEuvkUBw,477
639
- pyg_nightly-2.7.0.dev20250501.dist-info/licenses/LICENSE,sha256=ic-27cMJc1kWoMEYncz3Ya3Ur2Bi3bNLWib2DT763-o,1067
640
- pyg_nightly-2.7.0.dev20250501.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
641
- pyg_nightly-2.7.0.dev20250501.dist-info/METADATA,sha256=e9o73e1foK1fujj2QM22ROzTGGYygxt129at-dWOelk,62979
642
- pyg_nightly-2.7.0.dev20250501.dist-info/RECORD,,
640
+ pyg_nightly-2.7.0.dev20250503.dist-info/licenses/LICENSE,sha256=ic-27cMJc1kWoMEYncz3Ya3Ur2Bi3bNLWib2DT763-o,1067
641
+ pyg_nightly-2.7.0.dev20250503.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
642
+ pyg_nightly-2.7.0.dev20250503.dist-info/METADATA,sha256=vXGrJ6ZvEVO9QaA32mDyQfYkV0ulXx5AUTA4NAknMfU,62979
643
+ pyg_nightly-2.7.0.dev20250503.dist-info/RECORD,,
@@ -31,7 +31,7 @@ from .lazy_loader import LazyLoader
31
31
  contrib = LazyLoader('contrib', globals(), 'torch_geometric.contrib')
32
32
  graphgym = LazyLoader('graphgym', globals(), 'torch_geometric.graphgym')
33
33
 
34
- __version__ = '2.7.0.dev20250501'
34
+ __version__ = '2.7.0.dev20250503'
35
35
 
36
36
  __all__ = [
37
37
  'Index',
@@ -125,8 +125,8 @@ class Batch(metaclass=DynamicInheritance):
125
125
  cls=self.__class__.__bases__[-1],
126
126
  batch=self,
127
127
  idx=idx,
128
- slice_dict=getattr(self, '_slice_dict'),
129
- inc_dict=getattr(self, '_inc_dict'),
128
+ slice_dict=self._slice_dict,
129
+ inc_dict=self._inc_dict,
130
130
  decrement=True,
131
131
  )
132
132
 
@@ -230,9 +230,9 @@ class LargeGraphIndexer:
230
230
  "Only non-mapped features can be retrieved uniquely.")
231
231
  return ordered_set(self.get_node_features(feature_name))
232
232
 
233
- except KeyError:
233
+ except KeyError as e:
234
234
  raise AttributeError(
235
- f"Nodes do not have a feature called {feature_name}")
235
+ f"Nodes do not have a feature called {feature_name}") from e
236
236
 
237
237
  def add_node_feature(
238
238
  self,
@@ -354,9 +354,9 @@ class LargeGraphIndexer:
354
354
  raise IndexError(
355
355
  "Only non-mapped features can be retrieved uniquely.")
356
356
  return ordered_set(self.get_edge_features(feature_name))
357
- except KeyError:
357
+ except KeyError as e:
358
358
  raise AttributeError(
359
- f"Edges do not have a feature called {feature_name}")
359
+ f"Edges do not have a feature called {feature_name}") from e
360
360
 
361
361
  def add_edge_feature(
362
362
  self,
@@ -81,6 +81,7 @@ from .git_mol_dataset import GitMolDataset
81
81
  from .molecule_gpt_dataset import MoleculeGPTDataset
82
82
  from .instruct_mol_dataset import InstructMolDataset
83
83
  from .tag_dataset import TAGDataset
84
+ from .city import CityNetwork
84
85
 
85
86
  from .dbp15k import DBP15K
86
87
  from .aminer import AMiner
@@ -199,6 +200,7 @@ homo_datasets = [
199
200
  'MoleculeGPTDataset',
200
201
  'InstructMolDataset',
201
202
  'TAGDataset',
203
+ 'CityNetwork',
202
204
  ]
203
205
 
204
206
  hetero_datasets = [
@@ -0,0 +1,156 @@
1
+ import os.path as osp
2
+ from typing import Callable, Optional
3
+
4
+ from torch_geometric.data import (
5
+ Data,
6
+ InMemoryDataset,
7
+ download_url,
8
+ extract_tar,
9
+ )
10
+ from torch_geometric.io import fs
11
+
12
+
13
+ class CityNetwork(InMemoryDataset):
14
+ r"""The City-Networks are introduced in
15
+ `"Towards Quantifying Long-Range Interactions in Graph Machine Learning:
16
+ a Large Graph Dataset and a Measurement"
17
+ <https://arxiv.org/abs/2503.09008>`_ paper.
18
+ The dataset contains four city networks: `paris`, `shanghai`, `la`,
19
+ and 'london', where nodes represent junctions and edges represent
20
+ directed road segments. The task is to predict each node's eccentricity
21
+ score, which is approximated based on its 16-hop neighborhood. The score
22
+ indicates how accessible one node is in the network, and is mapped to
23
+ 10 quantiles for transductive classification. See the original
24
+ `source code <https://github.com/LeonResearch/City-Networks>`_ for more
25
+ details on the individual networks.
26
+
27
+ Args:
28
+ root (str): Root directory where the dataset should be saved.
29
+ name (str): The name of the dataset (``"paris"``, ``"shanghai"``,
30
+ ``"la"``, ``"london"``).
31
+ augmented (bool, optional): Whether to use the augmented node features
32
+ from edge features.(default: :obj:`True`)
33
+ transform (callable, optional): A function/transform that takes in an
34
+ :class:`~torch_geometric.data.Data` object and returns a
35
+ transformed version. The data object will be transformed before
36
+ every access. (default: :obj:`None`)
37
+ pre_transform (callable, optional): A function/transform that takes in
38
+ an :class:`~torch_geometric.data.Data` object and returns a
39
+ transformed version. The data object will be transformed before
40
+ being saved to disk. (default: :obj:`None`)
41
+ force_reload (bool, optional): Whether to re-process the dataset.
42
+ (default: :obj:`False`)
43
+
44
+ **STATS:**
45
+
46
+ .. list-table::
47
+ :widths: 10 10 10 10 10
48
+ :header-rows: 1
49
+
50
+ * - Name
51
+ - #nodes
52
+ - #edges
53
+ - #features
54
+ - #classes
55
+ * - paris
56
+ - 114,127
57
+ - 182,511
58
+ - 37
59
+ - 10
60
+ * - shanghai
61
+ - 183,917
62
+ - 262,092
63
+ - 37
64
+ - 10
65
+ * - la
66
+ - 240,587
67
+ - 341,523
68
+ - 37
69
+ - 10
70
+ * - london
71
+ - 568,795
72
+ - 756,502
73
+ - 37
74
+ - 10
75
+ """
76
+ url = "https://github.com/LeonResearch/City-Networks/raw/refs/heads/main/data/" # noqa: E501
77
+
78
+ def __init__(
79
+ self,
80
+ root: str,
81
+ name: str,
82
+ augmented: bool = True,
83
+ transform: Optional[Callable] = None,
84
+ pre_transform: Optional[Callable] = None,
85
+ force_reload: bool = False,
86
+ delete_raw: bool = False,
87
+ ) -> None:
88
+ self.name = name.lower()
89
+ assert self.name in ["paris", "shanghai", "la", "london"]
90
+ self.augmented = augmented
91
+ self.delete_raw = delete_raw
92
+ super().__init__(
93
+ root,
94
+ transform,
95
+ pre_transform,
96
+ force_reload=force_reload,
97
+ )
98
+ self.load(self.processed_paths[0])
99
+
100
+ @property
101
+ def raw_dir(self) -> str:
102
+ return osp.join(self.root, self.name, "raw")
103
+
104
+ @property
105
+ def processed_dir(self) -> str:
106
+ return osp.join(self.root, self.name, "processed")
107
+
108
+ @property
109
+ def raw_file_names(self) -> str:
110
+ return f"{self.name}.json"
111
+
112
+ @property
113
+ def processed_file_names(self) -> str:
114
+ return "data.pt"
115
+
116
+ def download(self) -> None:
117
+ self.download_path = download_url(
118
+ self.url + f"{self.name}.tar.gz",
119
+ self.raw_dir,
120
+ )
121
+
122
+ def process(self) -> None:
123
+ extract_tar(self.download_path, self.raw_dir)
124
+ data_path = osp.join(self.raw_dir, self.name)
125
+ node_feat = fs.torch_load(
126
+ osp.join(
127
+ data_path,
128
+ f"node_features{'_augmented' if self.augmented else ''}.pt",
129
+ ))
130
+ edge_index = fs.torch_load(osp.join(data_path, "edge_indices.pt"))
131
+ label = fs.torch_load(
132
+ osp.join(data_path, "10-chunk_16-hop_node_labels.pt"))
133
+ train_mask = fs.torch_load(osp.join(data_path, "train_mask.pt"))
134
+ val_mask = fs.torch_load(osp.join(data_path, "valid_mask.pt"))
135
+ test_mask = fs.torch_load(osp.join(data_path, "test_mask.pt"))
136
+ data = Data(
137
+ x=node_feat,
138
+ edge_index=edge_index,
139
+ y=label,
140
+ train_mask=train_mask,
141
+ val_mask=val_mask,
142
+ test_mask=test_mask,
143
+ )
144
+ if self.pre_transform is not None:
145
+ data = self.pre_transform(data)
146
+
147
+ self.save([data], self.processed_paths[0])
148
+
149
+ if self.delete_raw:
150
+ fs.rm(data_path)
151
+
152
+ def __repr__(self) -> str:
153
+ return (f"{self.__class__.__name__}("
154
+ f"root='{self.root}', "
155
+ f"name='{self.name}', "
156
+ f"augmented={self.augmented})")
@@ -138,9 +138,9 @@ class DistLoader:
138
138
  # close RPC & worker group at exit:
139
139
  atexit.register(shutdown_rpc, self.current_ctx_worker.worker_name)
140
140
 
141
- except RuntimeError:
141
+ except RuntimeError as e:
142
142
  raise RuntimeError(f"`{self}.init_fn()` could not initialize the "
143
- f"worker loop of the neighbor sampler")
143
+ f"worker loop of the neighbor sampler") from e
144
144
 
145
145
  def __repr__(self) -> str:
146
146
  return f'{self.__class__.__name__}(pid={self.pid})'
@@ -166,7 +166,7 @@ class ExplainerAlgorithm(torch.nn.Module):
166
166
  elif self.model_config.return_type == ModelReturnType.probs:
167
167
  loss_fn = F.binary_cross_entropy
168
168
  else:
169
- assert False
169
+ raise AssertionError()
170
170
 
171
171
  return loss_fn(y_hat.view_as(y), y.float())
172
172
 
@@ -183,7 +183,7 @@ class ExplainerAlgorithm(torch.nn.Module):
183
183
  elif self.model_config.return_type == ModelReturnType.log_probs:
184
184
  loss_fn = F.nll_loss
185
185
  else:
186
- assert False
186
+ raise AssertionError()
187
187
 
188
188
  return loss_fn(y_hat, y)
189
189
 
@@ -274,7 +274,7 @@ class GraphMaskExplainer(ExplainerAlgorithm):
274
274
  elif self.model_config.mode == ModelMode.regression:
275
275
  loss = self._loss_regression(y_hat, y)
276
276
  else:
277
- assert False
277
+ raise AssertionError()
278
278
 
279
279
  g = torch.relu(loss - self.allowance).mean()
280
280
  f = penalty * self.penalty_scaling
@@ -265,7 +265,7 @@ class Explainer:
265
265
  return (prediction > 0).long().view(-1)
266
266
  if self.model_config.return_type == ModelReturnType.probs:
267
267
  return (prediction > 0.5).long().view(-1)
268
- assert False
268
+ raise AssertionError()
269
269
 
270
270
  if self.model_config.mode == ModelMode.multiclass_classification:
271
271
  return prediction.argmax(dim=-1)
@@ -103,7 +103,7 @@ class ExplanationMixin:
103
103
  out[index] = 1.0
104
104
  return out.view(mask.size())
105
105
 
106
- assert False
106
+ raise AssertionError()
107
107
 
108
108
  def threshold(
109
109
  self,
@@ -106,9 +106,9 @@ class MultithreadingMixin:
106
106
  def _mt_init_fn(self, worker_id: int) -> None:
107
107
  try:
108
108
  torch.set_num_threads(int(self._worker_threads))
109
- except IndexError:
109
+ except IndexError as e:
110
110
  raise ValueError(f"Cannot set {self.worker_threads} threads "
111
- f"in worker {worker_id}")
111
+ f"in worker {worker_id}") from e
112
112
 
113
113
  # Chain worker init functions:
114
114
  self._old_worker_init_fn(worker_id)
@@ -213,9 +213,9 @@ class AffinityMixin:
213
213
 
214
214
  psutil.Process().cpu_affinity(worker_cores)
215
215
 
216
- except IndexError:
216
+ except IndexError as e:
217
217
  raise ValueError(f"Cannot use CPU affinity for worker ID "
218
- f"{worker_id} on CPU {self.loader_cores}")
218
+ f"{worker_id} on CPU {self.loader_cores}") from e
219
219
 
220
220
  # Chain worker init functions:
221
221
  self._old_worker_init_fn(worker_id)
@@ -135,7 +135,7 @@ class Aggregation(torch.nn.Module):
135
135
  if index.numel() > 0 and dim_size <= int(index.max()):
136
136
  raise ValueError(f"Encountered invalid 'dim_size' (got "
137
137
  f"'{dim_size}' but expected "
138
- f">= '{int(index.max()) + 1}')")
138
+ f">= '{int(index.max()) + 1}')") from e
139
139
  raise e
140
140
 
141
141
  def __repr__(self) -> str:
@@ -276,7 +276,7 @@ class MessagePassing(torch.nn.Module):
276
276
  f"{index.min().item()}). Please ensure that all "
277
277
  f"indices in 'edge_index' point to valid indices "
278
278
  f"in the interval [0, {src.size(self.node_dim)}) in "
279
- f"your node feature matrix and try again.")
279
+ f"your node feature matrix and try again.") from e
280
280
 
281
281
  if (index.numel() > 0 and index.max() >= src.size(self.node_dim)):
282
282
  raise IndexError(
@@ -285,7 +285,7 @@ class MessagePassing(torch.nn.Module):
285
285
  f"{index.max().item()}). Please ensure that all "
286
286
  f"indices in 'edge_index' point to valid indices "
287
287
  f"in the interval [0, {src.size(self.node_dim)}) in "
288
- f"your node feature matrix and try again.")
288
+ f"your node feature matrix and try again.") from e
289
289
 
290
290
  raise e
291
291
 
@@ -423,7 +423,7 @@ class NumNeighbors:
423
423
  elif isinstance(self.values, dict):
424
424
  default = self.default
425
425
  else:
426
- assert False
426
+ raise AssertionError()
427
427
 
428
428
  # Confirm that `values` only hold valid edge types:
429
429
  if isinstance(self.values, dict):
@@ -279,6 +279,7 @@ class NeighborSampler(BaseSampler):
279
279
  self.subgraph_type = SubgraphType(subgraph_type)
280
280
  self.disjoint = disjoint
281
281
  self.temporal_strategy = temporal_strategy
282
+ self.keep_orig_edges = False
282
283
 
283
284
  @property
284
285
  def num_neighbors(self) -> NumNeighbors:
@@ -321,7 +322,7 @@ class NeighborSampler(BaseSampler):
321
322
  ) -> Union[SamplerOutput, HeteroSamplerOutput]:
322
323
  out = node_sample(inputs, self._sample)
323
324
  if self.subgraph_type == SubgraphType.bidirectional:
324
- out = out.to_bidirectional()
325
+ out = out.to_bidirectional(keep_orig_edges=self.keep_orig_edges)
325
326
  return out
326
327
 
327
328
  # Edge-based sampling #####################################################
@@ -334,7 +335,7 @@ class NeighborSampler(BaseSampler):
334
335
  out = edge_sample(inputs, self._sample, self.num_nodes, self.disjoint,
335
336
  self.node_time, neg_sampling)
336
337
  if self.subgraph_type == SubgraphType.bidirectional:
337
- out = out.to_bidirectional()
338
+ out = out.to_bidirectional(keep_orig_edges=self.keep_orig_edges)
338
339
  return out
339
340
 
340
341
  # Other Utilities #########################################################
torch_geometric/typing.py CHANGED
@@ -70,12 +70,12 @@ try:
70
70
  WITH_WEIGHTED_NEIGHBOR_SAMPLE = ('edge_weight' in inspect.signature(
71
71
  pyg_lib.sampler.neighbor_sample).parameters)
72
72
  try:
73
- torch.classes.pyg.CPUHashMap
73
+ torch.classes.pyg.CPUHashMap # noqa: B018
74
74
  WITH_CPU_HASH_MAP = True
75
75
  except Exception:
76
76
  WITH_CPU_HASH_MAP = False
77
77
  try:
78
- torch.classes.pyg.CUDAHashMap
78
+ torch.classes.pyg.CUDAHashMap # noqa: B018
79
79
  WITH_CUDA_HASH_MAP = True
80
80
  except Exception:
81
81
  WITH_CUDA_HASH_MAP = False
@@ -148,10 +148,11 @@ def map_index(
148
148
  if inclusive:
149
149
  try:
150
150
  out = from_dlpack(result['right_ser'].to_dlpack())
151
- except ValueError:
152
- raise ValueError("Found invalid entries in 'src' that do not "
153
- "have a corresponding entry in 'index'. Set "
154
- "`inclusive=False` to ignore these entries.")
151
+ except ValueError as e:
152
+ raise ValueError(
153
+ "Found invalid entries in 'src' that do not "
154
+ "have a corresponding entry in 'index'. Set "
155
+ "`inclusive=False` to ignore these entries.") from e
155
156
  else:
156
157
  out = from_dlpack(result['right_ser'].fillna(-1).to_dlpack())
157
158