pyg-nightly 2.7.0.dev20250406__tar.gz → 2.7.0.dev20250407__tar.gz

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.
Files changed (643) hide show
  1. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/PKG-INFO +1 -1
  2. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/pyproject.toml +1 -1
  3. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/__init__.py +1 -1
  4. pyg_nightly-2.7.0.dev20250407/torch_geometric/explain/algorithm/gnn_explainer.py +674 -0
  5. pyg_nightly-2.7.0.dev20250406/torch_geometric/explain/algorithm/gnn_explainer.py +0 -338
  6. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/LICENSE +0 -0
  7. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/README.md +0 -0
  8. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/_compile.py +0 -0
  9. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/_onnx.py +0 -0
  10. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/backend.py +0 -0
  11. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/config_mixin.py +0 -0
  12. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/config_store.py +0 -0
  13. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/contrib/__init__.py +0 -0
  14. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/contrib/datasets/__init__.py +0 -0
  15. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/contrib/explain/__init__.py +0 -0
  16. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/contrib/explain/pgm_explainer.py +0 -0
  17. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/contrib/nn/__init__.py +0 -0
  18. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/contrib/nn/conv/__init__.py +0 -0
  19. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/contrib/nn/models/__init__.py +0 -0
  20. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/contrib/nn/models/rbcd_attack.py +0 -0
  21. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/contrib/transforms/__init__.py +0 -0
  22. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/__init__.py +0 -0
  23. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/batch.py +0 -0
  24. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/collate.py +0 -0
  25. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/data.py +0 -0
  26. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/database.py +0 -0
  27. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/datapipes.py +0 -0
  28. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/dataset.py +0 -0
  29. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/download.py +0 -0
  30. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/extract.py +0 -0
  31. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/feature_store.py +0 -0
  32. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/graph_store.py +0 -0
  33. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/hetero_data.py +0 -0
  34. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/hypergraph_data.py +0 -0
  35. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/in_memory_dataset.py +0 -0
  36. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/large_graph_indexer.py +0 -0
  37. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/lightning/__init__.py +0 -0
  38. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/lightning/datamodule.py +0 -0
  39. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/makedirs.py +0 -0
  40. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/on_disk_dataset.py +0 -0
  41. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/remote_backend_utils.py +0 -0
  42. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/separate.py +0 -0
  43. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/storage.py +0 -0
  44. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/summary.py +0 -0
  45. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/temporal.py +0 -0
  46. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/data/view.py +0 -0
  47. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/__init__.py +0 -0
  48. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/actor.py +0 -0
  49. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/airfrans.py +0 -0
  50. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/airports.py +0 -0
  51. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/amazon.py +0 -0
  52. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/amazon_book.py +0 -0
  53. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/amazon_products.py +0 -0
  54. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/aminer.py +0 -0
  55. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/aqsol.py +0 -0
  56. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/attributed_graph_dataset.py +0 -0
  57. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/ba2motif_dataset.py +0 -0
  58. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/ba_multi_shapes.py +0 -0
  59. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/ba_shapes.py +0 -0
  60. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/bitcoin_otc.py +0 -0
  61. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/brca_tgca.py +0 -0
  62. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/citation_full.py +0 -0
  63. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/coauthor.py +0 -0
  64. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/coma.py +0 -0
  65. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/cornell.py +0 -0
  66. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/dblp.py +0 -0
  67. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/dbp15k.py +0 -0
  68. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/deezer_europe.py +0 -0
  69. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/dgraph.py +0 -0
  70. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/dynamic_faust.py +0 -0
  71. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/elliptic.py +0 -0
  72. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/elliptic_temporal.py +0 -0
  73. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/email_eu_core.py +0 -0
  74. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/entities.py +0 -0
  75. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/explainer_dataset.py +0 -0
  76. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/facebook.py +0 -0
  77. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/fake.py +0 -0
  78. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/faust.py +0 -0
  79. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/flickr.py +0 -0
  80. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/freebase.py +0 -0
  81. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/gdelt.py +0 -0
  82. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/gdelt_lite.py +0 -0
  83. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/ged_dataset.py +0 -0
  84. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/gemsec.py +0 -0
  85. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/geometry.py +0 -0
  86. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/git_mol_dataset.py +0 -0
  87. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/github.py +0 -0
  88. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/gnn_benchmark_dataset.py +0 -0
  89. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/graph_generator/__init__.py +0 -0
  90. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/graph_generator/ba_graph.py +0 -0
  91. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/graph_generator/base.py +0 -0
  92. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/graph_generator/er_graph.py +0 -0
  93. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/graph_generator/grid_graph.py +0 -0
  94. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/graph_generator/tree_graph.py +0 -0
  95. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/heterophilous_graph_dataset.py +0 -0
  96. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/hgb_dataset.py +0 -0
  97. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/hm.py +0 -0
  98. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/hydro_net.py +0 -0
  99. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/icews.py +0 -0
  100. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/igmc_dataset.py +0 -0
  101. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/imdb.py +0 -0
  102. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/infection_dataset.py +0 -0
  103. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/instruct_mol_dataset.py +0 -0
  104. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/jodie.py +0 -0
  105. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/karate.py +0 -0
  106. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/last_fm.py +0 -0
  107. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/lastfm_asia.py +0 -0
  108. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/linkx_dataset.py +0 -0
  109. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/lrgb.py +0 -0
  110. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/malnet_tiny.py +0 -0
  111. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/md17.py +0 -0
  112. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/mixhop_synthetic_dataset.py +0 -0
  113. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/mnist_superpixels.py +0 -0
  114. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/modelnet.py +0 -0
  115. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/molecule_gpt_dataset.py +0 -0
  116. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/molecule_net.py +0 -0
  117. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/motif_generator/__init__.py +0 -0
  118. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/motif_generator/base.py +0 -0
  119. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/motif_generator/custom.py +0 -0
  120. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/motif_generator/cycle.py +0 -0
  121. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/motif_generator/grid.py +0 -0
  122. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/motif_generator/house.py +0 -0
  123. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/movie_lens.py +0 -0
  124. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/movie_lens_100k.py +0 -0
  125. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/movie_lens_1m.py +0 -0
  126. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/myket.py +0 -0
  127. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/nell.py +0 -0
  128. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/neurograph.py +0 -0
  129. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/ogb_mag.py +0 -0
  130. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/omdb.py +0 -0
  131. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/opf.py +0 -0
  132. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/ose_gvcs.py +0 -0
  133. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/particle.py +0 -0
  134. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/pascal.py +0 -0
  135. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/pascal_pf.py +0 -0
  136. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/pcpnet_dataset.py +0 -0
  137. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/pcqm4m.py +0 -0
  138. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/planetoid.py +0 -0
  139. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/polblogs.py +0 -0
  140. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/ppi.py +0 -0
  141. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/qm7.py +0 -0
  142. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/qm9.py +0 -0
  143. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/rcdd.py +0 -0
  144. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/reddit.py +0 -0
  145. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/reddit2.py +0 -0
  146. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/rel_link_pred_dataset.py +0 -0
  147. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/s3dis.py +0 -0
  148. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/sbm_dataset.py +0 -0
  149. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/shapenet.py +0 -0
  150. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/shrec2016.py +0 -0
  151. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/snap_dataset.py +0 -0
  152. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/suite_sparse.py +0 -0
  153. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/tag_dataset.py +0 -0
  154. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/taobao.py +0 -0
  155. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/tosca.py +0 -0
  156. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/tu_dataset.py +0 -0
  157. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/twitch.py +0 -0
  158. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/upfd.py +0 -0
  159. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/utils/__init__.py +0 -0
  160. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/utils/cheatsheet.py +0 -0
  161. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/web_qsp_dataset.py +0 -0
  162. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/webkb.py +0 -0
  163. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/wikics.py +0 -0
  164. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/wikidata.py +0 -0
  165. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/wikipedia_network.py +0 -0
  166. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/willow_object_class.py +0 -0
  167. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/word_net.py +0 -0
  168. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/yelp.py +0 -0
  169. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/datasets/zinc.py +0 -0
  170. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/debug.py +0 -0
  171. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/deprecation.py +0 -0
  172. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/device.py +0 -0
  173. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/distributed/__init__.py +0 -0
  174. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/distributed/dist_context.py +0 -0
  175. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/distributed/dist_link_neighbor_loader.py +0 -0
  176. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/distributed/dist_loader.py +0 -0
  177. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/distributed/dist_neighbor_loader.py +0 -0
  178. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/distributed/dist_neighbor_sampler.py +0 -0
  179. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/distributed/event_loop.py +0 -0
  180. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/distributed/local_feature_store.py +0 -0
  181. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/distributed/local_graph_store.py +0 -0
  182. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/distributed/partition.py +0 -0
  183. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/distributed/rpc.py +0 -0
  184. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/distributed/utils.py +0 -0
  185. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/edge_index.py +0 -0
  186. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/experimental.py +0 -0
  187. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/explain/__init__.py +0 -0
  188. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/explain/algorithm/__init__.py +0 -0
  189. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/explain/algorithm/attention_explainer.py +0 -0
  190. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/explain/algorithm/base.py +0 -0
  191. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/explain/algorithm/captum.py +0 -0
  192. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/explain/algorithm/captum_explainer.py +0 -0
  193. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/explain/algorithm/dummy_explainer.py +0 -0
  194. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/explain/algorithm/graphmask_explainer.py +0 -0
  195. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/explain/algorithm/pg_explainer.py +0 -0
  196. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/explain/algorithm/utils.py +0 -0
  197. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/explain/config.py +0 -0
  198. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/explain/explainer.py +0 -0
  199. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/explain/explanation.py +0 -0
  200. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/explain/metric/__init__.py +0 -0
  201. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/explain/metric/basic.py +0 -0
  202. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/explain/metric/faithfulness.py +0 -0
  203. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/explain/metric/fidelity.py +0 -0
  204. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/__init__.py +0 -0
  205. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/benchmark.py +0 -0
  206. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/checkpoint.py +0 -0
  207. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/cmd_args.py +0 -0
  208. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/config.py +0 -0
  209. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/contrib/__init__.py +0 -0
  210. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/contrib/act/__init__.py +0 -0
  211. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/contrib/config/__init__.py +0 -0
  212. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/contrib/encoder/__init__.py +0 -0
  213. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/contrib/head/__init__.py +0 -0
  214. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/contrib/layer/__init__.py +0 -0
  215. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/contrib/layer/generalconv.py +0 -0
  216. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/contrib/loader/__init__.py +0 -0
  217. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/contrib/loss/__init__.py +0 -0
  218. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/contrib/network/__init__.py +0 -0
  219. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/contrib/optimizer/__init__.py +0 -0
  220. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/contrib/pooling/__init__.py +0 -0
  221. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/contrib/stage/__init__.py +0 -0
  222. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/contrib/train/__init__.py +0 -0
  223. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/contrib/transform/__init__.py +0 -0
  224. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/imports.py +0 -0
  225. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/init.py +0 -0
  226. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/loader.py +0 -0
  227. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/logger.py +0 -0
  228. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/loss.py +0 -0
  229. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/model_builder.py +0 -0
  230. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/models/__init__.py +0 -0
  231. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/models/act.py +0 -0
  232. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/models/encoder.py +0 -0
  233. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/models/gnn.py +0 -0
  234. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/models/head.py +0 -0
  235. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/models/layer.py +0 -0
  236. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/models/pooling.py +0 -0
  237. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/models/transform.py +0 -0
  238. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/optim.py +0 -0
  239. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/register.py +0 -0
  240. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/train.py +0 -0
  241. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/utils/LICENSE +0 -0
  242. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/utils/__init__.py +0 -0
  243. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/utils/agg_runs.py +0 -0
  244. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/utils/comp_budget.py +0 -0
  245. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/utils/device.py +0 -0
  246. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/utils/epoch.py +0 -0
  247. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/utils/io.py +0 -0
  248. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/utils/plot.py +0 -0
  249. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/graphgym/utils/tools.py +0 -0
  250. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/hash_tensor.py +0 -0
  251. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/home.py +0 -0
  252. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/index.py +0 -0
  253. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/inspector.py +0 -0
  254. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/io/__init__.py +0 -0
  255. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/io/fs.py +0 -0
  256. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/io/npz.py +0 -0
  257. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/io/obj.py +0 -0
  258. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/io/off.py +0 -0
  259. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/io/planetoid.py +0 -0
  260. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/io/ply.py +0 -0
  261. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/io/sdf.py +0 -0
  262. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/io/tu.py +0 -0
  263. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/io/txt_array.py +0 -0
  264. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/isinstance.py +0 -0
  265. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/lazy_loader.py +0 -0
  266. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/__init__.py +0 -0
  267. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/base.py +0 -0
  268. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/cache.py +0 -0
  269. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/cluster.py +0 -0
  270. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/data_list_loader.py +0 -0
  271. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/dataloader.py +0 -0
  272. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/dense_data_loader.py +0 -0
  273. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/dynamic_batch_sampler.py +0 -0
  274. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/graph_saint.py +0 -0
  275. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/hgt_loader.py +0 -0
  276. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/ibmb_loader.py +0 -0
  277. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/imbalanced_sampler.py +0 -0
  278. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/link_loader.py +0 -0
  279. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/link_neighbor_loader.py +0 -0
  280. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/mixin.py +0 -0
  281. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/neighbor_loader.py +0 -0
  282. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/neighbor_sampler.py +0 -0
  283. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/node_loader.py +0 -0
  284. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/prefetch.py +0 -0
  285. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/rag_loader.py +0 -0
  286. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/random_node_loader.py +0 -0
  287. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/shadow.py +0 -0
  288. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/temporal_dataloader.py +0 -0
  289. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/utils.py +0 -0
  290. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/loader/zip_loader.py +0 -0
  291. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/logging.py +0 -0
  292. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/metrics/__init__.py +0 -0
  293. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/metrics/link_pred.py +0 -0
  294. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/__init__.py +0 -0
  295. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/__init__.py +0 -0
  296. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/attention.py +0 -0
  297. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/base.py +0 -0
  298. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/basic.py +0 -0
  299. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/deep_sets.py +0 -0
  300. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/equilibrium.py +0 -0
  301. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/fused.py +0 -0
  302. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/gmt.py +0 -0
  303. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/gru.py +0 -0
  304. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/lcm.py +0 -0
  305. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/lstm.py +0 -0
  306. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/mlp.py +0 -0
  307. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/multi.py +0 -0
  308. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/patch_transformer.py +0 -0
  309. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/quantile.py +0 -0
  310. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/scaler.py +0 -0
  311. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/set2set.py +0 -0
  312. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/set_transformer.py +0 -0
  313. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/sort.py +0 -0
  314. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/utils.py +0 -0
  315. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/aggr/variance_preserving.py +0 -0
  316. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/attention/__init__.py +0 -0
  317. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/attention/performer.py +0 -0
  318. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/attention/qformer.py +0 -0
  319. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/attention/sgformer.py +0 -0
  320. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/__init__.py +0 -0
  321. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/agnn_conv.py +0 -0
  322. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/antisymmetric_conv.py +0 -0
  323. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/appnp.py +0 -0
  324. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/arma_conv.py +0 -0
  325. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/cg_conv.py +0 -0
  326. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/cheb_conv.py +0 -0
  327. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/cluster_gcn_conv.py +0 -0
  328. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/collect.jinja +0 -0
  329. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/cugraph/__init__.py +0 -0
  330. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/cugraph/base.py +0 -0
  331. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/cugraph/gat_conv.py +0 -0
  332. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/cugraph/rgcn_conv.py +0 -0
  333. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/cugraph/sage_conv.py +0 -0
  334. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/dir_gnn_conv.py +0 -0
  335. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/dna_conv.py +0 -0
  336. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/edge_conv.py +0 -0
  337. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/edge_updater.jinja +0 -0
  338. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/eg_conv.py +0 -0
  339. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/fa_conv.py +0 -0
  340. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/feast_conv.py +0 -0
  341. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/film_conv.py +0 -0
  342. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/fused_gat_conv.py +0 -0
  343. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/gat_conv.py +0 -0
  344. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/gated_graph_conv.py +0 -0
  345. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/gatv2_conv.py +0 -0
  346. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/gcn2_conv.py +0 -0
  347. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/gcn_conv.py +0 -0
  348. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/gen_conv.py +0 -0
  349. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/general_conv.py +0 -0
  350. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/gin_conv.py +0 -0
  351. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/gmm_conv.py +0 -0
  352. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/gps_conv.py +0 -0
  353. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/graph_conv.py +0 -0
  354. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/gravnet_conv.py +0 -0
  355. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/han_conv.py +0 -0
  356. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/heat_conv.py +0 -0
  357. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/hetero_conv.py +0 -0
  358. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/hgt_conv.py +0 -0
  359. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/hypergraph_conv.py +0 -0
  360. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/le_conv.py +0 -0
  361. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/lg_conv.py +0 -0
  362. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/message_passing.py +0 -0
  363. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/mf_conv.py +0 -0
  364. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/mixhop_conv.py +0 -0
  365. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/nn_conv.py +0 -0
  366. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/pan_conv.py +0 -0
  367. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/pdn_conv.py +0 -0
  368. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/pna_conv.py +0 -0
  369. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/point_conv.py +0 -0
  370. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/point_gnn_conv.py +0 -0
  371. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/point_transformer_conv.py +0 -0
  372. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/ppf_conv.py +0 -0
  373. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/propagate.jinja +0 -0
  374. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/res_gated_graph_conv.py +0 -0
  375. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/rgat_conv.py +0 -0
  376. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/rgcn_conv.py +0 -0
  377. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/sage_conv.py +0 -0
  378. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/sg_conv.py +0 -0
  379. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/signed_conv.py +0 -0
  380. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/simple_conv.py +0 -0
  381. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/spline_conv.py +0 -0
  382. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/ssg_conv.py +0 -0
  383. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/supergat_conv.py +0 -0
  384. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/tag_conv.py +0 -0
  385. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/transformer_conv.py +0 -0
  386. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/utils/__init__.py +0 -0
  387. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/utils/cheatsheet.py +0 -0
  388. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/wl_conv.py +0 -0
  389. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/wl_conv_continuous.py +0 -0
  390. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/conv/x_conv.py +0 -0
  391. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/data_parallel.py +0 -0
  392. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/dense/__init__.py +0 -0
  393. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/dense/dense_gat_conv.py +0 -0
  394. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/dense/dense_gcn_conv.py +0 -0
  395. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/dense/dense_gin_conv.py +0 -0
  396. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/dense/dense_graph_conv.py +0 -0
  397. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/dense/dense_sage_conv.py +0 -0
  398. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/dense/diff_pool.py +0 -0
  399. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/dense/dmon_pool.py +0 -0
  400. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/dense/linear.py +0 -0
  401. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/dense/mincut_pool.py +0 -0
  402. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/encoding.py +0 -0
  403. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/functional/__init__.py +0 -0
  404. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/functional/bro.py +0 -0
  405. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/functional/gini.py +0 -0
  406. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/fx.py +0 -0
  407. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/glob.py +0 -0
  408. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/inits.py +0 -0
  409. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/kge/__init__.py +0 -0
  410. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/kge/base.py +0 -0
  411. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/kge/complex.py +0 -0
  412. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/kge/distmult.py +0 -0
  413. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/kge/loader.py +0 -0
  414. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/kge/rotate.py +0 -0
  415. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/kge/transe.py +0 -0
  416. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/lr_scheduler.py +0 -0
  417. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/model_hub.py +0 -0
  418. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/__init__.py +0 -0
  419. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/attentive_fp.py +0 -0
  420. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/attract_repel.py +0 -0
  421. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/autoencoder.py +0 -0
  422. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/basic_gnn.py +0 -0
  423. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/captum.py +0 -0
  424. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/correct_and_smooth.py +0 -0
  425. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/deep_graph_infomax.py +0 -0
  426. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/deepgcn.py +0 -0
  427. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/dimenet.py +0 -0
  428. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/dimenet_utils.py +0 -0
  429. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/g_retriever.py +0 -0
  430. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/git_mol.py +0 -0
  431. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/glem.py +0 -0
  432. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/gnnff.py +0 -0
  433. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/gpse.py +0 -0
  434. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/graph_mixer.py +0 -0
  435. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/graph_unet.py +0 -0
  436. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/jumping_knowledge.py +0 -0
  437. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/label_prop.py +0 -0
  438. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/lightgcn.py +0 -0
  439. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/linkx.py +0 -0
  440. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/mask_label.py +0 -0
  441. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/meta.py +0 -0
  442. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/metapath2vec.py +0 -0
  443. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/mlp.py +0 -0
  444. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/molecule_gpt.py +0 -0
  445. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/neural_fingerprint.py +0 -0
  446. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/node2vec.py +0 -0
  447. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/pmlp.py +0 -0
  448. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/re_net.py +0 -0
  449. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/rect.py +0 -0
  450. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/rev_gnn.py +0 -0
  451. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/schnet.py +0 -0
  452. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/sgformer.py +0 -0
  453. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/signed_gcn.py +0 -0
  454. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/tgn.py +0 -0
  455. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/models/visnet.py +0 -0
  456. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/module_dict.py +0 -0
  457. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/nlp/__init__.py +0 -0
  458. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/nlp/llm.py +0 -0
  459. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/nlp/sentence_transformer.py +0 -0
  460. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/nlp/vision_transformer.py +0 -0
  461. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/norm/__init__.py +0 -0
  462. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/norm/batch_norm.py +0 -0
  463. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/norm/diff_group_norm.py +0 -0
  464. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/norm/graph_norm.py +0 -0
  465. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/norm/graph_size_norm.py +0 -0
  466. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/norm/instance_norm.py +0 -0
  467. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/norm/layer_norm.py +0 -0
  468. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/norm/mean_subtraction_norm.py +0 -0
  469. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/norm/msg_norm.py +0 -0
  470. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/norm/pair_norm.py +0 -0
  471. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/parameter_dict.py +0 -0
  472. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/__init__.py +0 -0
  473. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/approx_knn.py +0 -0
  474. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/asap.py +0 -0
  475. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/avg_pool.py +0 -0
  476. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/cluster_pool.py +0 -0
  477. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/connect/__init__.py +0 -0
  478. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/connect/base.py +0 -0
  479. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/connect/filter_edges.py +0 -0
  480. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/consecutive.py +0 -0
  481. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/decimation.py +0 -0
  482. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/edge_pool.py +0 -0
  483. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/glob.py +0 -0
  484. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/graclus.py +0 -0
  485. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/knn.py +0 -0
  486. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/max_pool.py +0 -0
  487. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/mem_pool.py +0 -0
  488. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/pan_pool.py +0 -0
  489. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/pool.py +0 -0
  490. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/sag_pool.py +0 -0
  491. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/select/__init__.py +0 -0
  492. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/select/base.py +0 -0
  493. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/select/topk.py +0 -0
  494. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/topk_pool.py +0 -0
  495. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/pool/voxel_grid.py +0 -0
  496. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/reshape.py +0 -0
  497. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/resolver.py +0 -0
  498. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/sequential.jinja +0 -0
  499. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/sequential.py +0 -0
  500. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/summary.py +0 -0
  501. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/to_fixed_size_transformer.py +0 -0
  502. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/to_hetero_module.py +0 -0
  503. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/to_hetero_transformer.py +0 -0
  504. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/to_hetero_with_bases_transformer.py +0 -0
  505. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/unpool/__init__.py +0 -0
  506. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/nn/unpool/knn_interpolate.py +0 -0
  507. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/profile/__init__.py +0 -0
  508. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/profile/benchmark.py +0 -0
  509. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/profile/nvtx.py +0 -0
  510. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/profile/profile.py +0 -0
  511. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/profile/profiler.py +0 -0
  512. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/profile/utils.py +0 -0
  513. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/resolver.py +0 -0
  514. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/sampler/__init__.py +0 -0
  515. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/sampler/base.py +0 -0
  516. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/sampler/hgt_sampler.py +0 -0
  517. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/sampler/neighbor_sampler.py +0 -0
  518. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/sampler/utils.py +0 -0
  519. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/seed.py +0 -0
  520. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/template.py +0 -0
  521. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/testing/__init__.py +0 -0
  522. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/testing/asserts.py +0 -0
  523. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/testing/data.py +0 -0
  524. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/testing/decorators.py +0 -0
  525. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/testing/distributed.py +0 -0
  526. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/testing/feature_store.py +0 -0
  527. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/testing/graph_store.py +0 -0
  528. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/__init__.py +0 -0
  529. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/add_gpse.py +0 -0
  530. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/add_metapaths.py +0 -0
  531. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/add_positional_encoding.py +0 -0
  532. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/add_remaining_self_loops.py +0 -0
  533. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/add_self_loops.py +0 -0
  534. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/base_transform.py +0 -0
  535. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/cartesian.py +0 -0
  536. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/center.py +0 -0
  537. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/compose.py +0 -0
  538. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/constant.py +0 -0
  539. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/delaunay.py +0 -0
  540. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/distance.py +0 -0
  541. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/face_to_edge.py +0 -0
  542. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/feature_propagation.py +0 -0
  543. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/fixed_points.py +0 -0
  544. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/gcn_norm.py +0 -0
  545. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/gdc.py +0 -0
  546. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/generate_mesh_normals.py +0 -0
  547. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/grid_sampling.py +0 -0
  548. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/half_hop.py +0 -0
  549. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/knn_graph.py +0 -0
  550. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/laplacian_lambda_max.py +0 -0
  551. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/largest_connected_components.py +0 -0
  552. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/line_graph.py +0 -0
  553. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/linear_transformation.py +0 -0
  554. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/local_cartesian.py +0 -0
  555. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/local_degree_profile.py +0 -0
  556. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/mask.py +0 -0
  557. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/node_property_split.py +0 -0
  558. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/normalize_features.py +0 -0
  559. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/normalize_rotation.py +0 -0
  560. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/normalize_scale.py +0 -0
  561. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/one_hot_degree.py +0 -0
  562. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/pad.py +0 -0
  563. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/point_pair_features.py +0 -0
  564. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/polar.py +0 -0
  565. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/radius_graph.py +0 -0
  566. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/random_flip.py +0 -0
  567. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/random_jitter.py +0 -0
  568. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/random_link_split.py +0 -0
  569. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/random_node_split.py +0 -0
  570. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/random_rotate.py +0 -0
  571. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/random_scale.py +0 -0
  572. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/random_shear.py +0 -0
  573. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/remove_duplicated_edges.py +0 -0
  574. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/remove_isolated_nodes.py +0 -0
  575. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/remove_self_loops.py +0 -0
  576. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/remove_training_classes.py +0 -0
  577. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/rooted_subgraph.py +0 -0
  578. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/sample_points.py +0 -0
  579. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/sign.py +0 -0
  580. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/spherical.py +0 -0
  581. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/svd_feature_reduction.py +0 -0
  582. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/target_indegree.py +0 -0
  583. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/to_dense.py +0 -0
  584. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/to_device.py +0 -0
  585. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/to_sparse_tensor.py +0 -0
  586. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/to_superpixels.py +0 -0
  587. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/to_undirected.py +0 -0
  588. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/two_hop.py +0 -0
  589. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/transforms/virtual_node.py +0 -0
  590. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/typing.py +0 -0
  591. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/__init__.py +0 -0
  592. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_assortativity.py +0 -0
  593. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_coalesce.py +0 -0
  594. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_degree.py +0 -0
  595. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_grid.py +0 -0
  596. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_homophily.py +0 -0
  597. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_index_sort.py +0 -0
  598. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_lexsort.py +0 -0
  599. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_negative_sampling.py +0 -0
  600. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_normalize_edge_index.py +0 -0
  601. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_normalized_cut.py +0 -0
  602. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_one_hot.py +0 -0
  603. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_scatter.py +0 -0
  604. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_segment.py +0 -0
  605. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_select.py +0 -0
  606. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_softmax.py +0 -0
  607. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_sort_edge_index.py +0 -0
  608. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_spmm.py +0 -0
  609. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_subgraph.py +0 -0
  610. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_to_dense_adj.py +0 -0
  611. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_to_dense_batch.py +0 -0
  612. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_train_test_split_edges.py +0 -0
  613. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_tree_decomposition.py +0 -0
  614. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_trim_to_layer.py +0 -0
  615. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/_unbatch.py +0 -0
  616. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/augmentation.py +0 -0
  617. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/convert.py +0 -0
  618. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/cross_entropy.py +0 -0
  619. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/dropout.py +0 -0
  620. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/embedding.py +0 -0
  621. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/functions.py +0 -0
  622. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/geodesic.py +0 -0
  623. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/hetero.py +0 -0
  624. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/isolated.py +0 -0
  625. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/laplacian.py +0 -0
  626. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/loop.py +0 -0
  627. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/map.py +0 -0
  628. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/mask.py +0 -0
  629. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/mesh_laplacian.py +0 -0
  630. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/mixin.py +0 -0
  631. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/nested.py +0 -0
  632. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/noise_scheduler.py +0 -0
  633. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/num_nodes.py +0 -0
  634. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/ppr.py +0 -0
  635. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/random.py +0 -0
  636. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/repeat.py +0 -0
  637. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/smiles.py +0 -0
  638. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/sparse.py +0 -0
  639. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/utils/undirected.py +0 -0
  640. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/visualization/__init__.py +0 -0
  641. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/visualization/graph.py +0 -0
  642. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/visualization/influence.py +0 -0
  643. {pyg_nightly-2.7.0.dev20250406 → pyg_nightly-2.7.0.dev20250407}/torch_geometric/warnings.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyg-nightly
3
- Version: 2.7.0.dev20250406
3
+ Version: 2.7.0.dev20250407
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>
@@ -4,7 +4,7 @@ build-backend="flit_core.buildapi"
4
4
 
5
5
  [project]
6
6
  name="pyg-nightly"
7
- version="2.7.0.dev20250406"
7
+ version="2.7.0.dev20250407"
8
8
  authors=[
9
9
  {name="Matthias Fey", email="matthias@pyg.org"},
10
10
  ]
@@ -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.dev20250406'
34
+ __version__ = '2.7.0.dev20250407'
35
35
 
36
36
  __all__ = [
37
37
  'Index',
@@ -0,0 +1,674 @@
1
+ from math import sqrt
2
+ from typing import Dict, Optional, Tuple, Union, overload
3
+
4
+ import torch
5
+ from torch import Tensor
6
+ from torch.nn.parameter import Parameter
7
+
8
+ from torch_geometric.explain import (
9
+ ExplainerConfig,
10
+ Explanation,
11
+ HeteroExplanation,
12
+ ModelConfig,
13
+ )
14
+ from torch_geometric.explain.algorithm import ExplainerAlgorithm
15
+ from torch_geometric.explain.algorithm.utils import (
16
+ clear_masks,
17
+ set_hetero_masks,
18
+ set_masks,
19
+ )
20
+ from torch_geometric.explain.config import MaskType, ModelMode, ModelTaskLevel
21
+ from torch_geometric.typing import EdgeType, NodeType
22
+
23
+
24
+ class GNNExplainer(ExplainerAlgorithm):
25
+ r"""The GNN-Explainer model from the `"GNNExplainer: Generating
26
+ Explanations for Graph Neural Networks"
27
+ <https://arxiv.org/abs/1903.03894>`_ paper for identifying compact subgraph
28
+ structures and node features that play a crucial role in the predictions
29
+ made by a GNN.
30
+
31
+ .. note::
32
+
33
+ For an example of using :class:`GNNExplainer`, see
34
+ `examples/explain/gnn_explainer.py <https://github.com/pyg-team/
35
+ pytorch_geometric/blob/master/examples/explain/gnn_explainer.py>`_,
36
+ `examples/explain/gnn_explainer_ba_shapes.py <https://github.com/
37
+ pyg-team/pytorch_geometric/blob/master/examples/
38
+ explain/gnn_explainer_ba_shapes.py>`_, and `examples/explain/
39
+ gnn_explainer_link_pred.py <https://github.com/pyg-team/
40
+ pytorch_geometric/blob/master/examples/explain/gnn_explainer_link_pred.py>`_.
41
+
42
+ .. note::
43
+
44
+ The :obj:`edge_size` coefficient is multiplied by the number of nodes
45
+ in the explanation at every iteration, and the resulting value is added
46
+ to the loss as a regularization term, with the goal of producing
47
+ compact explanations.
48
+ A higher value will push the algorithm towards explanations with less
49
+ elements.
50
+ Consider adjusting the :obj:`edge_size` coefficient according to the
51
+ average node degree in the dataset, especially if this value is bigger
52
+ than in the datasets used in the original paper.
53
+
54
+ Args:
55
+ epochs (int, optional): The number of epochs to train.
56
+ (default: :obj:`100`)
57
+ lr (float, optional): The learning rate to apply.
58
+ (default: :obj:`0.01`)
59
+ **kwargs (optional): Additional hyper-parameters to override default
60
+ settings in
61
+ :attr:`~torch_geometric.explain.algorithm.GNNExplainer.coeffs`.
62
+ """
63
+
64
+ coeffs = {
65
+ 'edge_size': 0.005,
66
+ 'edge_reduction': 'sum',
67
+ 'node_feat_size': 1.0,
68
+ 'node_feat_reduction': 'mean',
69
+ 'edge_ent': 1.0,
70
+ 'node_feat_ent': 0.1,
71
+ 'EPS': 1e-15,
72
+ }
73
+
74
+ def __init__(self, epochs: int = 100, lr: float = 0.01, **kwargs):
75
+ super().__init__()
76
+ self.epochs = epochs
77
+ self.lr = lr
78
+ self.coeffs.update(kwargs)
79
+
80
+ self.node_mask = self.hard_node_mask = None
81
+ self.edge_mask = self.hard_edge_mask = None
82
+ self.is_hetero = False
83
+
84
+ @overload
85
+ def forward(
86
+ self,
87
+ model: torch.nn.Module,
88
+ x: Tensor,
89
+ edge_index: Tensor,
90
+ *,
91
+ target: Tensor,
92
+ index: Optional[Union[int, Tensor]] = None,
93
+ **kwargs,
94
+ ) -> Explanation:
95
+ ...
96
+
97
+ @overload
98
+ def forward(
99
+ self,
100
+ model: torch.nn.Module,
101
+ x: Dict[NodeType, Tensor],
102
+ edge_index: Dict[EdgeType, Tensor],
103
+ *,
104
+ target: Tensor,
105
+ index: Optional[Union[int, Tensor]] = None,
106
+ **kwargs,
107
+ ) -> HeteroExplanation:
108
+ ...
109
+
110
+ def forward(
111
+ self,
112
+ model: torch.nn.Module,
113
+ x: Union[Tensor, Dict[NodeType, Tensor]],
114
+ edge_index: Union[Tensor, Dict[EdgeType, Tensor]],
115
+ *,
116
+ target: Tensor,
117
+ index: Optional[Union[int, Tensor]] = None,
118
+ **kwargs,
119
+ ) -> Union[Explanation, HeteroExplanation]:
120
+ self.is_hetero = isinstance(x, dict)
121
+ self._train(model, x, edge_index, target=target, index=index, **kwargs)
122
+ explanation = self._create_explanation()
123
+ self._clean_model(model)
124
+ return explanation
125
+
126
+ def _create_explanation(self) -> Union[Explanation, HeteroExplanation]:
127
+ """Create an explanation object from the current masks."""
128
+ if self.is_hetero:
129
+ # For heterogeneous graphs, process each type separately
130
+ node_mask_dict = {}
131
+ edge_mask_dict = {}
132
+
133
+ for node_type, mask in self.node_mask.items():
134
+ if mask is not None:
135
+ node_mask_dict[node_type] = self._post_process_mask(
136
+ mask,
137
+ self.hard_node_mask[node_type],
138
+ apply_sigmoid=True,
139
+ )
140
+
141
+ for edge_type, mask in self.edge_mask.items():
142
+ if mask is not None:
143
+ edge_mask_dict[edge_type] = self._post_process_mask(
144
+ mask,
145
+ self.hard_edge_mask[edge_type],
146
+ apply_sigmoid=True,
147
+ )
148
+
149
+ # Create heterogeneous explanation
150
+ explanation = HeteroExplanation()
151
+ explanation.set_value_dict('node_mask', node_mask_dict)
152
+ explanation.set_value_dict('edge_mask', edge_mask_dict)
153
+
154
+ else:
155
+ # For homogeneous graphs, process single masks
156
+ node_mask = self._post_process_mask(
157
+ self.node_mask,
158
+ self.hard_node_mask,
159
+ apply_sigmoid=True,
160
+ )
161
+ edge_mask = self._post_process_mask(
162
+ self.edge_mask,
163
+ self.hard_edge_mask,
164
+ apply_sigmoid=True,
165
+ )
166
+
167
+ # Create homogeneous explanation
168
+ explanation = Explanation(node_mask=node_mask, edge_mask=edge_mask)
169
+
170
+ return explanation
171
+
172
+ def supports(self) -> bool:
173
+ return True
174
+
175
+ @overload
176
+ def _train(
177
+ self,
178
+ model: torch.nn.Module,
179
+ x: Tensor,
180
+ edge_index: Tensor,
181
+ *,
182
+ target: Tensor,
183
+ index: Optional[Union[int, Tensor]] = None,
184
+ **kwargs,
185
+ ) -> None:
186
+ ...
187
+
188
+ @overload
189
+ def _train(
190
+ self,
191
+ model: torch.nn.Module,
192
+ x: Dict[NodeType, Tensor],
193
+ edge_index: Dict[EdgeType, Tensor],
194
+ *,
195
+ target: Tensor,
196
+ index: Optional[Union[int, Tensor]] = None,
197
+ **kwargs,
198
+ ) -> None:
199
+ ...
200
+
201
+ def _train(
202
+ self,
203
+ model: torch.nn.Module,
204
+ x: Union[Tensor, Dict[NodeType, Tensor]],
205
+ edge_index: Union[Tensor, Dict[EdgeType, Tensor]],
206
+ *,
207
+ target: Tensor,
208
+ index: Optional[Union[int, Tensor]] = None,
209
+ **kwargs,
210
+ ) -> None:
211
+ # Initialize masks based on input type
212
+ self._initialize_masks(x, edge_index)
213
+
214
+ # Collect parameters for optimization
215
+ parameters = self._collect_parameters(model, edge_index)
216
+
217
+ # Create optimizer
218
+ optimizer = torch.optim.Adam(parameters, lr=self.lr)
219
+
220
+ # Training loop
221
+ for i in range(self.epochs):
222
+ optimizer.zero_grad()
223
+
224
+ # Forward pass with masked inputs
225
+ y_hat = self._forward_with_masks(model, x, edge_index, **kwargs)
226
+ y = target
227
+
228
+ # Handle index if provided
229
+ if index is not None:
230
+ y_hat, y = y_hat[index], y[index]
231
+
232
+ # Calculate loss
233
+ loss = self._loss(y_hat, y)
234
+
235
+ # Backward pass
236
+ loss.backward()
237
+ optimizer.step()
238
+
239
+ # In the first iteration, collect gradients to identify important
240
+ # nodes/edges
241
+ if i == 0:
242
+ self._collect_gradients()
243
+
244
+ def _collect_parameters(self, model, edge_index):
245
+ """Collect parameters for optimization."""
246
+ parameters = []
247
+
248
+ if self.is_hetero:
249
+ # For heterogeneous graphs, collect parameters from all types
250
+ for mask in self.node_mask.values():
251
+ if mask is not None:
252
+ parameters.append(mask)
253
+ if any(v is not None for v in self.edge_mask.values()):
254
+ set_hetero_masks(model, self.edge_mask, edge_index)
255
+ for mask in self.edge_mask.values():
256
+ if mask is not None:
257
+ parameters.append(mask)
258
+ else:
259
+ # For homogeneous graphs, collect single parameters
260
+ if self.node_mask is not None:
261
+ parameters.append(self.node_mask)
262
+ if self.edge_mask is not None:
263
+ set_masks(model, self.edge_mask, edge_index,
264
+ apply_sigmoid=True)
265
+ parameters.append(self.edge_mask)
266
+
267
+ return parameters
268
+
269
+ @overload
270
+ def _forward_with_masks(
271
+ self,
272
+ model: torch.nn.Module,
273
+ x: Tensor,
274
+ edge_index: Tensor,
275
+ **kwargs,
276
+ ) -> Tensor:
277
+ ...
278
+
279
+ @overload
280
+ def _forward_with_masks(
281
+ self,
282
+ model: torch.nn.Module,
283
+ x: Dict[NodeType, Tensor],
284
+ edge_index: Dict[EdgeType, Tensor],
285
+ **kwargs,
286
+ ) -> Tensor:
287
+ ...
288
+
289
+ def _forward_with_masks(
290
+ self,
291
+ model: torch.nn.Module,
292
+ x: Union[Tensor, Dict[NodeType, Tensor]],
293
+ edge_index: Union[Tensor, Dict[EdgeType, Tensor]],
294
+ **kwargs,
295
+ ) -> Tensor:
296
+ """Forward pass with masked inputs."""
297
+ if self.is_hetero:
298
+ # Apply masks to heterogeneous inputs
299
+ h_dict = {}
300
+ for node_type, features in x.items():
301
+ if node_type in self.node_mask and self.node_mask[
302
+ node_type] is not None:
303
+ h_dict[node_type] = features * self.node_mask[
304
+ node_type].sigmoid()
305
+ else:
306
+ h_dict[node_type] = features
307
+
308
+ # Forward pass with masked features
309
+ return model(h_dict, edge_index, **kwargs)
310
+ else:
311
+ # Apply mask to homogeneous input
312
+ h = x if self.node_mask is None else x * self.node_mask.sigmoid()
313
+
314
+ # Forward pass with masked features
315
+ return model(h, edge_index, **kwargs)
316
+
317
+ def _initialize_masks(
318
+ self,
319
+ x: Union[Tensor, Dict[NodeType, Tensor]],
320
+ edge_index: Union[Tensor, Dict[EdgeType, Tensor]],
321
+ ) -> None:
322
+ node_mask_type = self.explainer_config.node_mask_type
323
+ edge_mask_type = self.explainer_config.edge_mask_type
324
+
325
+ if self.is_hetero:
326
+ # Initialize dictionaries for heterogeneous masks
327
+ self.node_mask = {}
328
+ self.hard_node_mask = {}
329
+ self.edge_mask = {}
330
+ self.hard_edge_mask = {}
331
+
332
+ # Initialize node masks for each node type
333
+ for node_type, features in x.items():
334
+ device = features.device
335
+ N, F = features.size()
336
+ self._initialize_node_mask(node_mask_type, node_type, N, F,
337
+ device)
338
+
339
+ # Initialize edge masks for each edge type
340
+ for edge_type, indices in edge_index.items():
341
+ device = indices.device
342
+ E = indices.size(1)
343
+ N = max(indices.max().item() + 1,
344
+ max(feat.size(0) for feat in x.values()))
345
+ self._initialize_edge_mask(edge_mask_type, edge_type, E, N,
346
+ device)
347
+ else:
348
+ # Initialize masks for homogeneous graph
349
+ device = x.device
350
+ (N, F), E = x.size(), edge_index.size(1)
351
+
352
+ # Initialize homogeneous node and edge masks
353
+ self._initialize_homogeneous_masks(node_mask_type, edge_mask_type,
354
+ N, F, E, device)
355
+
356
+ def _initialize_node_mask(
357
+ self,
358
+ node_mask_type,
359
+ node_type,
360
+ N,
361
+ F,
362
+ device,
363
+ ) -> None:
364
+ """Initialize node mask for a specific node type."""
365
+ std = 0.1
366
+ if node_mask_type is None:
367
+ self.node_mask[node_type] = None
368
+ self.hard_node_mask[node_type] = None
369
+ elif node_mask_type == MaskType.object:
370
+ self.node_mask[node_type] = Parameter(
371
+ torch.randn(N, 1, device=device) * std)
372
+ self.hard_node_mask[node_type] = None
373
+ elif node_mask_type == MaskType.attributes:
374
+ self.node_mask[node_type] = Parameter(
375
+ torch.randn(N, F, device=device) * std)
376
+ self.hard_node_mask[node_type] = None
377
+ elif node_mask_type == MaskType.common_attributes:
378
+ self.node_mask[node_type] = Parameter(
379
+ torch.randn(1, F, device=device) * std)
380
+ self.hard_node_mask[node_type] = None
381
+ else:
382
+ raise ValueError(f"Invalid node mask type: {node_mask_type}")
383
+
384
+ def _initialize_edge_mask(self, edge_mask_type, edge_type, E, N, device):
385
+ """Initialize edge mask for a specific edge type."""
386
+ if edge_mask_type is None:
387
+ self.edge_mask[edge_type] = None
388
+ self.hard_edge_mask[edge_type] = None
389
+ elif edge_mask_type == MaskType.object:
390
+ std = torch.nn.init.calculate_gain('relu') * sqrt(2.0 / (2 * N))
391
+ self.edge_mask[edge_type] = Parameter(
392
+ torch.randn(E, device=device) * std)
393
+ self.hard_edge_mask[edge_type] = None
394
+ else:
395
+ raise ValueError(f"Invalid edge mask type: {edge_mask_type}")
396
+
397
+ def _initialize_homogeneous_masks(self, node_mask_type, edge_mask_type, N,
398
+ F, E, device):
399
+ """Initialize masks for homogeneous graph."""
400
+ # Initialize node mask
401
+ std = 0.1
402
+ if node_mask_type is None:
403
+ self.node_mask = None
404
+ elif node_mask_type == MaskType.object:
405
+ self.node_mask = Parameter(torch.randn(N, 1, device=device) * std)
406
+ elif node_mask_type == MaskType.attributes:
407
+ self.node_mask = Parameter(torch.randn(N, F, device=device) * std)
408
+ elif node_mask_type == MaskType.common_attributes:
409
+ self.node_mask = Parameter(torch.randn(1, F, device=device) * std)
410
+ else:
411
+ raise ValueError(f"Invalid node mask type: {node_mask_type}")
412
+
413
+ # Initialize edge mask
414
+ if edge_mask_type is None:
415
+ self.edge_mask = None
416
+ elif edge_mask_type == MaskType.object:
417
+ std = torch.nn.init.calculate_gain('relu') * sqrt(2.0 / (2 * N))
418
+ self.edge_mask = Parameter(torch.randn(E, device=device) * std)
419
+ else:
420
+ raise ValueError(f"Invalid edge mask type: {edge_mask_type}")
421
+
422
+ def _collect_gradients(self) -> None:
423
+ if self.is_hetero:
424
+ self._collect_hetero_gradients()
425
+ else:
426
+ self._collect_homo_gradients()
427
+
428
+ def _collect_hetero_gradients(self):
429
+ """Collect gradients for heterogeneous graph."""
430
+ for node_type, mask in self.node_mask.items():
431
+ if mask is not None:
432
+ if mask.grad is None:
433
+ raise ValueError(
434
+ f"Could not compute gradients for node masks of type "
435
+ f"'{node_type}'. Please make sure that node masks are "
436
+ f"used inside the model or disable it via "
437
+ f"`node_mask_type=None`.")
438
+
439
+ self.hard_node_mask[node_type] = mask.grad != 0.0
440
+
441
+ for edge_type, mask in self.edge_mask.items():
442
+ if mask is not None:
443
+ if mask.grad is None:
444
+ raise ValueError(
445
+ f"Could not compute gradients for edge masks of type "
446
+ f"'{edge_type}'. Please make sure that edge masks are "
447
+ f"used inside the model or disable it via "
448
+ f"`edge_mask_type=None`.")
449
+ self.hard_edge_mask[edge_type] = mask.grad != 0.0
450
+
451
+ def _collect_homo_gradients(self):
452
+ """Collect gradients for homogeneous graph."""
453
+ if self.node_mask is not None:
454
+ if self.node_mask.grad is None:
455
+ raise ValueError("Could not compute gradients for node "
456
+ "features. Please make sure that node "
457
+ "features are used inside the model or "
458
+ "disable it via `node_mask_type=None`.")
459
+ self.hard_node_mask = self.node_mask.grad != 0.0
460
+
461
+ if self.edge_mask is not None:
462
+ if self.edge_mask.grad is None:
463
+ raise ValueError("Could not compute gradients for edges. "
464
+ "Please make sure that edges are used "
465
+ "via message passing inside the model or "
466
+ "disable it via `edge_mask_type=None`.")
467
+ self.hard_edge_mask = self.edge_mask.grad != 0.0
468
+
469
+ def _loss(self, y_hat: Tensor, y: Tensor) -> Tensor:
470
+ # Calculate base loss based on model configuration
471
+ loss = self._calculate_base_loss(y_hat, y)
472
+
473
+ # Apply regularization based on graph type
474
+ if self.is_hetero:
475
+ # Apply regularization for heterogeneous graph
476
+ loss = self._apply_hetero_regularization(loss)
477
+ else:
478
+ # Apply regularization for homogeneous graph
479
+ loss = self._apply_homo_regularization(loss)
480
+
481
+ return loss
482
+
483
+ def _calculate_base_loss(self, y_hat, y):
484
+ """Calculate base loss based on model configuration."""
485
+ if self.model_config.mode == ModelMode.binary_classification:
486
+ return self._loss_binary_classification(y_hat, y)
487
+ elif self.model_config.mode == ModelMode.multiclass_classification:
488
+ return self._loss_multiclass_classification(y_hat, y)
489
+ elif self.model_config.mode == ModelMode.regression:
490
+ return self._loss_regression(y_hat, y)
491
+ else:
492
+ raise ValueError(f"Invalid model mode: {self.model_config.mode}")
493
+
494
+ def _apply_hetero_regularization(self, loss):
495
+ """Apply regularization for heterogeneous graph."""
496
+ # Apply regularization for each edge type
497
+ for edge_type, mask in self.edge_mask.items():
498
+ if (mask is not None
499
+ and self.hard_edge_mask[edge_type] is not None):
500
+ loss = self._add_mask_regularization(
501
+ loss, mask, self.hard_edge_mask[edge_type],
502
+ self.coeffs['edge_size'], self.coeffs['edge_reduction'],
503
+ self.coeffs['edge_ent'])
504
+
505
+ # Apply regularization for each node type
506
+ for node_type, mask in self.node_mask.items():
507
+ if (mask is not None
508
+ and self.hard_node_mask[node_type] is not None):
509
+ loss = self._add_mask_regularization(
510
+ loss, mask, self.hard_node_mask[node_type],
511
+ self.coeffs['node_feat_size'],
512
+ self.coeffs['node_feat_reduction'],
513
+ self.coeffs['node_feat_ent'])
514
+
515
+ return loss
516
+
517
+ def _apply_homo_regularization(self, loss):
518
+ """Apply regularization for homogeneous graph."""
519
+ # Apply regularization for edge mask
520
+ if self.hard_edge_mask is not None:
521
+ assert self.edge_mask is not None
522
+ loss = self._add_mask_regularization(loss, self.edge_mask,
523
+ self.hard_edge_mask,
524
+ self.coeffs['edge_size'],
525
+ self.coeffs['edge_reduction'],
526
+ self.coeffs['edge_ent'])
527
+
528
+ # Apply regularization for node mask
529
+ if self.hard_node_mask is not None:
530
+ assert self.node_mask is not None
531
+ loss = self._add_mask_regularization(
532
+ loss, self.node_mask, self.hard_node_mask,
533
+ self.coeffs['node_feat_size'],
534
+ self.coeffs['node_feat_reduction'],
535
+ self.coeffs['node_feat_ent'])
536
+
537
+ return loss
538
+
539
+ def _add_mask_regularization(self, loss, mask, hard_mask, size_coeff,
540
+ reduction_name, ent_coeff):
541
+ """Add size and entropy regularization for a mask."""
542
+ m = mask[hard_mask].sigmoid()
543
+ reduce_fn = getattr(torch, reduction_name)
544
+ # Add size regularization
545
+ loss = loss + size_coeff * reduce_fn(m)
546
+ # Add entropy regularization
547
+ ent = -m * torch.log(m + self.coeffs['EPS']) - (
548
+ 1 - m) * torch.log(1 - m + self.coeffs['EPS'])
549
+ loss = loss + ent_coeff * ent.mean()
550
+
551
+ return loss
552
+
553
+ def _clean_model(self, model):
554
+ clear_masks(model)
555
+ self.node_mask = self.hard_node_mask = None
556
+ self.edge_mask = self.hard_edge_mask = None
557
+
558
+
559
+ class GNNExplainer_:
560
+ r"""Deprecated version for :class:`GNNExplainer`."""
561
+
562
+ coeffs = GNNExplainer.coeffs
563
+
564
+ conversion_node_mask_type = {
565
+ 'feature': 'common_attributes',
566
+ 'individual_feature': 'attributes',
567
+ 'scalar': 'object',
568
+ }
569
+
570
+ conversion_return_type = {
571
+ 'log_prob': 'log_probs',
572
+ 'prob': 'probs',
573
+ 'raw': 'raw',
574
+ 'regression': 'raw',
575
+ }
576
+
577
+ def __init__(
578
+ self,
579
+ model: torch.nn.Module,
580
+ epochs: int = 100,
581
+ lr: float = 0.01,
582
+ return_type: str = 'log_prob',
583
+ feat_mask_type: str = 'feature',
584
+ allow_edge_mask: bool = True,
585
+ **kwargs,
586
+ ):
587
+ assert feat_mask_type in ['feature', 'individual_feature', 'scalar']
588
+
589
+ explainer_config = ExplainerConfig(
590
+ explanation_type='model',
591
+ node_mask_type=self.conversion_node_mask_type[feat_mask_type],
592
+ edge_mask_type=MaskType.object if allow_edge_mask else None,
593
+ )
594
+ model_config = ModelConfig(
595
+ mode='regression'
596
+ if return_type == 'regression' else 'multiclass_classification',
597
+ task_level=ModelTaskLevel.node,
598
+ return_type=self.conversion_return_type[return_type],
599
+ )
600
+
601
+ self.model = model
602
+ self._explainer = GNNExplainer(epochs=epochs, lr=lr, **kwargs)
603
+ self._explainer.connect(explainer_config, model_config)
604
+
605
+ @torch.no_grad()
606
+ def get_initial_prediction(self, *args, **kwargs) -> Tensor:
607
+
608
+ training = self.model.training
609
+ self.model.eval()
610
+
611
+ out = self.model(*args, **kwargs)
612
+ if (self._explainer.model_config.mode ==
613
+ ModelMode.multiclass_classification):
614
+ out = out.argmax(dim=-1)
615
+
616
+ self.model.train(training)
617
+
618
+ return out
619
+
620
+ def explain_graph(
621
+ self,
622
+ x: Tensor,
623
+ edge_index: Tensor,
624
+ **kwargs,
625
+ ) -> Tuple[Tensor, Tensor]:
626
+ self._explainer.model_config.task_level = ModelTaskLevel.graph
627
+
628
+ explanation = self._explainer(
629
+ self.model,
630
+ x,
631
+ edge_index,
632
+ target=self.get_initial_prediction(x, edge_index, **kwargs),
633
+ **kwargs,
634
+ )
635
+ return self._convert_output(explanation, edge_index)
636
+
637
+ def explain_node(
638
+ self,
639
+ node_idx: int,
640
+ x: Tensor,
641
+ edge_index: Tensor,
642
+ **kwargs,
643
+ ) -> Tuple[Tensor, Tensor]:
644
+ self._explainer.model_config.task_level = ModelTaskLevel.node
645
+ explanation = self._explainer(
646
+ self.model,
647
+ x,
648
+ edge_index,
649
+ target=self.get_initial_prediction(x, edge_index, **kwargs),
650
+ index=node_idx,
651
+ **kwargs,
652
+ )
653
+ return self._convert_output(explanation, edge_index, index=node_idx,
654
+ x=x)
655
+
656
+ def _convert_output(self, explanation, edge_index, index=None, x=None):
657
+ node_mask = explanation.get('node_mask')
658
+ edge_mask = explanation.get('edge_mask')
659
+
660
+ if node_mask is not None:
661
+ node_mask_type = self._explainer.explainer_config.node_mask_type
662
+ if node_mask_type in {MaskType.object, MaskType.common_attributes}:
663
+ node_mask = node_mask.view(-1)
664
+
665
+ if edge_mask is None:
666
+ if index is not None:
667
+ _, edge_mask = self._explainer._get_hard_masks(
668
+ self.model, index, edge_index, num_nodes=x.size(0))
669
+ edge_mask = edge_mask.to(x.dtype)
670
+ else:
671
+ edge_mask = torch.ones(edge_index.size(1),
672
+ device=edge_index.device)
673
+
674
+ return node_mask, edge_mask