pyg-nightly 2.7.0.dev20250428__tar.gz → 2.7.0.dev20250429__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.dev20250428 → pyg_nightly-2.7.0.dev20250429}/PKG-INFO +1 -1
  2. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/pyproject.toml +1 -1
  3. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/__init__.py +1 -1
  4. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/explanation.py +86 -2
  5. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/visualization/__init__.py +2 -1
  6. pyg_nightly-2.7.0.dev20250429/torch_geometric/visualization/graph.py +398 -0
  7. pyg_nightly-2.7.0.dev20250428/torch_geometric/visualization/graph.py +0 -152
  8. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/LICENSE +0 -0
  9. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/README.md +0 -0
  10. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/_compile.py +0 -0
  11. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/_onnx.py +0 -0
  12. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/backend.py +0 -0
  13. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/config_mixin.py +0 -0
  14. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/config_store.py +0 -0
  15. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/contrib/__init__.py +0 -0
  16. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/contrib/datasets/__init__.py +0 -0
  17. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/contrib/explain/__init__.py +0 -0
  18. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/contrib/explain/pgm_explainer.py +0 -0
  19. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/contrib/nn/__init__.py +0 -0
  20. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/contrib/nn/conv/__init__.py +0 -0
  21. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/contrib/nn/models/__init__.py +0 -0
  22. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/contrib/nn/models/rbcd_attack.py +0 -0
  23. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/contrib/transforms/__init__.py +0 -0
  24. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/__init__.py +0 -0
  25. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/batch.py +0 -0
  26. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/collate.py +0 -0
  27. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/data.py +0 -0
  28. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/database.py +0 -0
  29. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/datapipes.py +0 -0
  30. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/dataset.py +0 -0
  31. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/download.py +0 -0
  32. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/extract.py +0 -0
  33. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/feature_store.py +0 -0
  34. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/graph_store.py +0 -0
  35. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/hetero_data.py +0 -0
  36. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/hypergraph_data.py +0 -0
  37. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/in_memory_dataset.py +0 -0
  38. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/large_graph_indexer.py +0 -0
  39. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/lightning/__init__.py +0 -0
  40. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/lightning/datamodule.py +0 -0
  41. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/makedirs.py +0 -0
  42. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/on_disk_dataset.py +0 -0
  43. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/remote_backend_utils.py +0 -0
  44. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/separate.py +0 -0
  45. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/storage.py +0 -0
  46. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/summary.py +0 -0
  47. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/temporal.py +0 -0
  48. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/data/view.py +0 -0
  49. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/__init__.py +0 -0
  50. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/actor.py +0 -0
  51. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/airfrans.py +0 -0
  52. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/airports.py +0 -0
  53. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/amazon.py +0 -0
  54. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/amazon_book.py +0 -0
  55. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/amazon_products.py +0 -0
  56. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/aminer.py +0 -0
  57. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/aqsol.py +0 -0
  58. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/attributed_graph_dataset.py +0 -0
  59. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/ba2motif_dataset.py +0 -0
  60. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/ba_multi_shapes.py +0 -0
  61. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/ba_shapes.py +0 -0
  62. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/bitcoin_otc.py +0 -0
  63. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/brca_tgca.py +0 -0
  64. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/citation_full.py +0 -0
  65. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/coauthor.py +0 -0
  66. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/coma.py +0 -0
  67. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/cornell.py +0 -0
  68. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/dblp.py +0 -0
  69. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/dbp15k.py +0 -0
  70. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/deezer_europe.py +0 -0
  71. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/dgraph.py +0 -0
  72. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/dynamic_faust.py +0 -0
  73. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/elliptic.py +0 -0
  74. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/elliptic_temporal.py +0 -0
  75. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/email_eu_core.py +0 -0
  76. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/entities.py +0 -0
  77. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/explainer_dataset.py +0 -0
  78. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/facebook.py +0 -0
  79. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/fake.py +0 -0
  80. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/faust.py +0 -0
  81. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/flickr.py +0 -0
  82. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/freebase.py +0 -0
  83. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/gdelt.py +0 -0
  84. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/gdelt_lite.py +0 -0
  85. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/ged_dataset.py +0 -0
  86. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/gemsec.py +0 -0
  87. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/geometry.py +0 -0
  88. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/git_mol_dataset.py +0 -0
  89. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/github.py +0 -0
  90. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/gnn_benchmark_dataset.py +0 -0
  91. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/graph_generator/__init__.py +0 -0
  92. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/graph_generator/ba_graph.py +0 -0
  93. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/graph_generator/base.py +0 -0
  94. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/graph_generator/er_graph.py +0 -0
  95. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/graph_generator/grid_graph.py +0 -0
  96. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/graph_generator/tree_graph.py +0 -0
  97. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/heterophilous_graph_dataset.py +0 -0
  98. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/hgb_dataset.py +0 -0
  99. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/hm.py +0 -0
  100. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/hydro_net.py +0 -0
  101. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/icews.py +0 -0
  102. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/igmc_dataset.py +0 -0
  103. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/imdb.py +0 -0
  104. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/infection_dataset.py +0 -0
  105. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/instruct_mol_dataset.py +0 -0
  106. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/jodie.py +0 -0
  107. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/karate.py +0 -0
  108. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/last_fm.py +0 -0
  109. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/lastfm_asia.py +0 -0
  110. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/linkx_dataset.py +0 -0
  111. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/lrgb.py +0 -0
  112. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/malnet_tiny.py +0 -0
  113. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/md17.py +0 -0
  114. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/mixhop_synthetic_dataset.py +0 -0
  115. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/mnist_superpixels.py +0 -0
  116. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/modelnet.py +0 -0
  117. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/molecule_gpt_dataset.py +0 -0
  118. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/molecule_net.py +0 -0
  119. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/motif_generator/__init__.py +0 -0
  120. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/motif_generator/base.py +0 -0
  121. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/motif_generator/custom.py +0 -0
  122. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/motif_generator/cycle.py +0 -0
  123. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/motif_generator/grid.py +0 -0
  124. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/motif_generator/house.py +0 -0
  125. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/movie_lens.py +0 -0
  126. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/movie_lens_100k.py +0 -0
  127. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/movie_lens_1m.py +0 -0
  128. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/myket.py +0 -0
  129. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/nell.py +0 -0
  130. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/neurograph.py +0 -0
  131. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/ogb_mag.py +0 -0
  132. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/omdb.py +0 -0
  133. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/opf.py +0 -0
  134. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/ose_gvcs.py +0 -0
  135. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/particle.py +0 -0
  136. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/pascal.py +0 -0
  137. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/pascal_pf.py +0 -0
  138. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/pcpnet_dataset.py +0 -0
  139. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/pcqm4m.py +0 -0
  140. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/planetoid.py +0 -0
  141. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/polblogs.py +0 -0
  142. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/ppi.py +0 -0
  143. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/qm7.py +0 -0
  144. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/qm9.py +0 -0
  145. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/rcdd.py +0 -0
  146. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/reddit.py +0 -0
  147. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/reddit2.py +0 -0
  148. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/rel_link_pred_dataset.py +0 -0
  149. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/s3dis.py +0 -0
  150. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/sbm_dataset.py +0 -0
  151. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/shapenet.py +0 -0
  152. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/shrec2016.py +0 -0
  153. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/snap_dataset.py +0 -0
  154. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/suite_sparse.py +0 -0
  155. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/tag_dataset.py +0 -0
  156. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/taobao.py +0 -0
  157. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/tosca.py +0 -0
  158. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/tu_dataset.py +0 -0
  159. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/twitch.py +0 -0
  160. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/upfd.py +0 -0
  161. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/utils/__init__.py +0 -0
  162. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/utils/cheatsheet.py +0 -0
  163. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/web_qsp_dataset.py +0 -0
  164. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/webkb.py +0 -0
  165. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/wikics.py +0 -0
  166. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/wikidata.py +0 -0
  167. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/wikipedia_network.py +0 -0
  168. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/willow_object_class.py +0 -0
  169. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/word_net.py +0 -0
  170. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/yelp.py +0 -0
  171. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/datasets/zinc.py +0 -0
  172. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/debug.py +0 -0
  173. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/deprecation.py +0 -0
  174. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/device.py +0 -0
  175. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/distributed/__init__.py +0 -0
  176. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/distributed/dist_context.py +0 -0
  177. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/distributed/dist_link_neighbor_loader.py +0 -0
  178. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/distributed/dist_loader.py +0 -0
  179. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/distributed/dist_neighbor_loader.py +0 -0
  180. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/distributed/dist_neighbor_sampler.py +0 -0
  181. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/distributed/event_loop.py +0 -0
  182. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/distributed/local_feature_store.py +0 -0
  183. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/distributed/local_graph_store.py +0 -0
  184. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/distributed/partition.py +0 -0
  185. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/distributed/rpc.py +0 -0
  186. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/distributed/utils.py +0 -0
  187. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/edge_index.py +0 -0
  188. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/experimental.py +0 -0
  189. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/__init__.py +0 -0
  190. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/algorithm/__init__.py +0 -0
  191. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/algorithm/attention_explainer.py +0 -0
  192. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/algorithm/base.py +0 -0
  193. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/algorithm/captum.py +0 -0
  194. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/algorithm/captum_explainer.py +0 -0
  195. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/algorithm/dummy_explainer.py +0 -0
  196. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/algorithm/gnn_explainer.py +0 -0
  197. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/algorithm/graphmask_explainer.py +0 -0
  198. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/algorithm/pg_explainer.py +0 -0
  199. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/algorithm/utils.py +0 -0
  200. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/config.py +0 -0
  201. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/explainer.py +0 -0
  202. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/metric/__init__.py +0 -0
  203. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/metric/basic.py +0 -0
  204. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/metric/faithfulness.py +0 -0
  205. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/explain/metric/fidelity.py +0 -0
  206. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/__init__.py +0 -0
  207. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/benchmark.py +0 -0
  208. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/checkpoint.py +0 -0
  209. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/cmd_args.py +0 -0
  210. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/config.py +0 -0
  211. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/contrib/__init__.py +0 -0
  212. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/contrib/act/__init__.py +0 -0
  213. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/contrib/config/__init__.py +0 -0
  214. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/contrib/encoder/__init__.py +0 -0
  215. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/contrib/head/__init__.py +0 -0
  216. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/contrib/layer/__init__.py +0 -0
  217. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/contrib/layer/generalconv.py +0 -0
  218. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/contrib/loader/__init__.py +0 -0
  219. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/contrib/loss/__init__.py +0 -0
  220. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/contrib/network/__init__.py +0 -0
  221. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/contrib/optimizer/__init__.py +0 -0
  222. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/contrib/pooling/__init__.py +0 -0
  223. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/contrib/stage/__init__.py +0 -0
  224. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/contrib/train/__init__.py +0 -0
  225. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/contrib/transform/__init__.py +0 -0
  226. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/imports.py +0 -0
  227. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/init.py +0 -0
  228. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/loader.py +0 -0
  229. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/logger.py +0 -0
  230. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/loss.py +0 -0
  231. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/model_builder.py +0 -0
  232. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/models/__init__.py +0 -0
  233. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/models/act.py +0 -0
  234. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/models/encoder.py +0 -0
  235. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/models/gnn.py +0 -0
  236. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/models/head.py +0 -0
  237. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/models/layer.py +0 -0
  238. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/models/pooling.py +0 -0
  239. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/models/transform.py +0 -0
  240. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/optim.py +0 -0
  241. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/register.py +0 -0
  242. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/train.py +0 -0
  243. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/utils/LICENSE +0 -0
  244. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/utils/__init__.py +0 -0
  245. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/utils/agg_runs.py +0 -0
  246. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/utils/comp_budget.py +0 -0
  247. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/utils/device.py +0 -0
  248. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/utils/epoch.py +0 -0
  249. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/utils/io.py +0 -0
  250. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/utils/plot.py +0 -0
  251. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/graphgym/utils/tools.py +0 -0
  252. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/hash_tensor.py +0 -0
  253. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/home.py +0 -0
  254. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/index.py +0 -0
  255. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/inspector.py +0 -0
  256. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/io/__init__.py +0 -0
  257. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/io/fs.py +0 -0
  258. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/io/npz.py +0 -0
  259. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/io/obj.py +0 -0
  260. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/io/off.py +0 -0
  261. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/io/planetoid.py +0 -0
  262. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/io/ply.py +0 -0
  263. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/io/sdf.py +0 -0
  264. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/io/tu.py +0 -0
  265. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/io/txt_array.py +0 -0
  266. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/isinstance.py +0 -0
  267. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/lazy_loader.py +0 -0
  268. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/__init__.py +0 -0
  269. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/base.py +0 -0
  270. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/cache.py +0 -0
  271. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/cluster.py +0 -0
  272. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/data_list_loader.py +0 -0
  273. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/dataloader.py +0 -0
  274. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/dense_data_loader.py +0 -0
  275. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/dynamic_batch_sampler.py +0 -0
  276. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/graph_saint.py +0 -0
  277. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/hgt_loader.py +0 -0
  278. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/ibmb_loader.py +0 -0
  279. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/imbalanced_sampler.py +0 -0
  280. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/link_loader.py +0 -0
  281. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/link_neighbor_loader.py +0 -0
  282. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/mixin.py +0 -0
  283. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/neighbor_loader.py +0 -0
  284. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/neighbor_sampler.py +0 -0
  285. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/node_loader.py +0 -0
  286. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/prefetch.py +0 -0
  287. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/rag_loader.py +0 -0
  288. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/random_node_loader.py +0 -0
  289. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/shadow.py +0 -0
  290. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/temporal_dataloader.py +0 -0
  291. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/utils.py +0 -0
  292. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/loader/zip_loader.py +0 -0
  293. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/logging.py +0 -0
  294. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/metrics/__init__.py +0 -0
  295. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/metrics/link_pred.py +0 -0
  296. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/__init__.py +0 -0
  297. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/__init__.py +0 -0
  298. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/attention.py +0 -0
  299. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/base.py +0 -0
  300. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/basic.py +0 -0
  301. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/deep_sets.py +0 -0
  302. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/equilibrium.py +0 -0
  303. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/fused.py +0 -0
  304. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/gmt.py +0 -0
  305. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/gru.py +0 -0
  306. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/lcm.py +0 -0
  307. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/lstm.py +0 -0
  308. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/mlp.py +0 -0
  309. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/multi.py +0 -0
  310. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/patch_transformer.py +0 -0
  311. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/quantile.py +0 -0
  312. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/scaler.py +0 -0
  313. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/set2set.py +0 -0
  314. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/set_transformer.py +0 -0
  315. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/sort.py +0 -0
  316. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/utils.py +0 -0
  317. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/aggr/variance_preserving.py +0 -0
  318. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/attention/__init__.py +0 -0
  319. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/attention/performer.py +0 -0
  320. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/attention/qformer.py +0 -0
  321. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/attention/sgformer.py +0 -0
  322. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/__init__.py +0 -0
  323. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/agnn_conv.py +0 -0
  324. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/antisymmetric_conv.py +0 -0
  325. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/appnp.py +0 -0
  326. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/arma_conv.py +0 -0
  327. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/cg_conv.py +0 -0
  328. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/cheb_conv.py +0 -0
  329. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/cluster_gcn_conv.py +0 -0
  330. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/collect.jinja +0 -0
  331. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/cugraph/__init__.py +0 -0
  332. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/cugraph/base.py +0 -0
  333. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/cugraph/gat_conv.py +0 -0
  334. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/cugraph/rgcn_conv.py +0 -0
  335. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/cugraph/sage_conv.py +0 -0
  336. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/dir_gnn_conv.py +0 -0
  337. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/dna_conv.py +0 -0
  338. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/edge_conv.py +0 -0
  339. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/edge_updater.jinja +0 -0
  340. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/eg_conv.py +0 -0
  341. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/fa_conv.py +0 -0
  342. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/feast_conv.py +0 -0
  343. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/film_conv.py +0 -0
  344. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/fused_gat_conv.py +0 -0
  345. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/gat_conv.py +0 -0
  346. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/gated_graph_conv.py +0 -0
  347. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/gatv2_conv.py +0 -0
  348. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/gcn2_conv.py +0 -0
  349. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/gcn_conv.py +0 -0
  350. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/gen_conv.py +0 -0
  351. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/general_conv.py +0 -0
  352. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/gin_conv.py +0 -0
  353. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/gmm_conv.py +0 -0
  354. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/gps_conv.py +0 -0
  355. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/graph_conv.py +0 -0
  356. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/gravnet_conv.py +0 -0
  357. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/han_conv.py +0 -0
  358. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/heat_conv.py +0 -0
  359. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/hetero_conv.py +0 -0
  360. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/hgt_conv.py +0 -0
  361. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/hypergraph_conv.py +0 -0
  362. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/le_conv.py +0 -0
  363. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/lg_conv.py +0 -0
  364. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/message_passing.py +0 -0
  365. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/mf_conv.py +0 -0
  366. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/mixhop_conv.py +0 -0
  367. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/nn_conv.py +0 -0
  368. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/pan_conv.py +0 -0
  369. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/pdn_conv.py +0 -0
  370. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/pna_conv.py +0 -0
  371. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/point_conv.py +0 -0
  372. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/point_gnn_conv.py +0 -0
  373. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/point_transformer_conv.py +0 -0
  374. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/ppf_conv.py +0 -0
  375. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/propagate.jinja +0 -0
  376. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/res_gated_graph_conv.py +0 -0
  377. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/rgat_conv.py +0 -0
  378. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/rgcn_conv.py +0 -0
  379. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/sage_conv.py +0 -0
  380. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/sg_conv.py +0 -0
  381. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/signed_conv.py +0 -0
  382. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/simple_conv.py +0 -0
  383. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/spline_conv.py +0 -0
  384. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/ssg_conv.py +0 -0
  385. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/supergat_conv.py +0 -0
  386. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/tag_conv.py +0 -0
  387. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/transformer_conv.py +0 -0
  388. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/utils/__init__.py +0 -0
  389. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/utils/cheatsheet.py +0 -0
  390. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/wl_conv.py +0 -0
  391. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/wl_conv_continuous.py +0 -0
  392. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/conv/x_conv.py +0 -0
  393. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/data_parallel.py +0 -0
  394. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/dense/__init__.py +0 -0
  395. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/dense/dense_gat_conv.py +0 -0
  396. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/dense/dense_gcn_conv.py +0 -0
  397. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/dense/dense_gin_conv.py +0 -0
  398. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/dense/dense_graph_conv.py +0 -0
  399. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/dense/dense_sage_conv.py +0 -0
  400. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/dense/diff_pool.py +0 -0
  401. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/dense/dmon_pool.py +0 -0
  402. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/dense/linear.py +0 -0
  403. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/dense/mincut_pool.py +0 -0
  404. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/encoding.py +0 -0
  405. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/functional/__init__.py +0 -0
  406. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/functional/bro.py +0 -0
  407. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/functional/gini.py +0 -0
  408. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/fx.py +0 -0
  409. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/glob.py +0 -0
  410. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/inits.py +0 -0
  411. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/kge/__init__.py +0 -0
  412. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/kge/base.py +0 -0
  413. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/kge/complex.py +0 -0
  414. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/kge/distmult.py +0 -0
  415. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/kge/loader.py +0 -0
  416. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/kge/rotate.py +0 -0
  417. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/kge/transe.py +0 -0
  418. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/lr_scheduler.py +0 -0
  419. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/model_hub.py +0 -0
  420. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/__init__.py +0 -0
  421. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/attentive_fp.py +0 -0
  422. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/attract_repel.py +0 -0
  423. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/autoencoder.py +0 -0
  424. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/basic_gnn.py +0 -0
  425. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/captum.py +0 -0
  426. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/correct_and_smooth.py +0 -0
  427. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/deep_graph_infomax.py +0 -0
  428. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/deepgcn.py +0 -0
  429. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/dimenet.py +0 -0
  430. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/dimenet_utils.py +0 -0
  431. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/g_retriever.py +0 -0
  432. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/git_mol.py +0 -0
  433. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/glem.py +0 -0
  434. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/gnnff.py +0 -0
  435. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/gpse.py +0 -0
  436. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/graph_mixer.py +0 -0
  437. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/graph_unet.py +0 -0
  438. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/jumping_knowledge.py +0 -0
  439. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/label_prop.py +0 -0
  440. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/lightgcn.py +0 -0
  441. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/linkx.py +0 -0
  442. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/mask_label.py +0 -0
  443. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/meta.py +0 -0
  444. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/metapath2vec.py +0 -0
  445. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/mlp.py +0 -0
  446. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/molecule_gpt.py +0 -0
  447. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/neural_fingerprint.py +0 -0
  448. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/node2vec.py +0 -0
  449. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/pmlp.py +0 -0
  450. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/re_net.py +0 -0
  451. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/rect.py +0 -0
  452. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/rev_gnn.py +0 -0
  453. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/schnet.py +0 -0
  454. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/sgformer.py +0 -0
  455. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/signed_gcn.py +0 -0
  456. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/tgn.py +0 -0
  457. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/models/visnet.py +0 -0
  458. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/module_dict.py +0 -0
  459. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/nlp/__init__.py +0 -0
  460. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/nlp/llm.py +0 -0
  461. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/nlp/sentence_transformer.py +0 -0
  462. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/nlp/vision_transformer.py +0 -0
  463. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/norm/__init__.py +0 -0
  464. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/norm/batch_norm.py +0 -0
  465. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/norm/diff_group_norm.py +0 -0
  466. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/norm/graph_norm.py +0 -0
  467. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/norm/graph_size_norm.py +0 -0
  468. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/norm/instance_norm.py +0 -0
  469. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/norm/layer_norm.py +0 -0
  470. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/norm/mean_subtraction_norm.py +0 -0
  471. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/norm/msg_norm.py +0 -0
  472. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/norm/pair_norm.py +0 -0
  473. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/parameter_dict.py +0 -0
  474. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/__init__.py +0 -0
  475. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/approx_knn.py +0 -0
  476. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/asap.py +0 -0
  477. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/avg_pool.py +0 -0
  478. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/cluster_pool.py +0 -0
  479. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/connect/__init__.py +0 -0
  480. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/connect/base.py +0 -0
  481. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/connect/filter_edges.py +0 -0
  482. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/consecutive.py +0 -0
  483. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/decimation.py +0 -0
  484. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/edge_pool.py +0 -0
  485. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/glob.py +0 -0
  486. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/graclus.py +0 -0
  487. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/knn.py +0 -0
  488. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/max_pool.py +0 -0
  489. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/mem_pool.py +0 -0
  490. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/pan_pool.py +0 -0
  491. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/pool.py +0 -0
  492. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/sag_pool.py +0 -0
  493. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/select/__init__.py +0 -0
  494. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/select/base.py +0 -0
  495. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/select/topk.py +0 -0
  496. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/topk_pool.py +0 -0
  497. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/pool/voxel_grid.py +0 -0
  498. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/reshape.py +0 -0
  499. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/resolver.py +0 -0
  500. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/sequential.jinja +0 -0
  501. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/sequential.py +0 -0
  502. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/summary.py +0 -0
  503. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/to_fixed_size_transformer.py +0 -0
  504. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/to_hetero_module.py +0 -0
  505. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/to_hetero_transformer.py +0 -0
  506. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/to_hetero_with_bases_transformer.py +0 -0
  507. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/unpool/__init__.py +0 -0
  508. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/nn/unpool/knn_interpolate.py +0 -0
  509. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/profile/__init__.py +0 -0
  510. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/profile/benchmark.py +0 -0
  511. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/profile/nvtx.py +0 -0
  512. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/profile/profile.py +0 -0
  513. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/profile/profiler.py +0 -0
  514. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/profile/utils.py +0 -0
  515. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/resolver.py +0 -0
  516. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/sampler/__init__.py +0 -0
  517. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/sampler/base.py +0 -0
  518. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/sampler/hgt_sampler.py +0 -0
  519. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/sampler/neighbor_sampler.py +0 -0
  520. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/sampler/utils.py +0 -0
  521. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/seed.py +0 -0
  522. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/template.py +0 -0
  523. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/testing/__init__.py +0 -0
  524. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/testing/asserts.py +0 -0
  525. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/testing/data.py +0 -0
  526. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/testing/decorators.py +0 -0
  527. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/testing/distributed.py +0 -0
  528. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/testing/feature_store.py +0 -0
  529. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/testing/graph_store.py +0 -0
  530. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/__init__.py +0 -0
  531. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/add_gpse.py +0 -0
  532. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/add_metapaths.py +0 -0
  533. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/add_positional_encoding.py +0 -0
  534. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/add_remaining_self_loops.py +0 -0
  535. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/add_self_loops.py +0 -0
  536. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/base_transform.py +0 -0
  537. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/cartesian.py +0 -0
  538. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/center.py +0 -0
  539. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/compose.py +0 -0
  540. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/constant.py +0 -0
  541. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/delaunay.py +0 -0
  542. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/distance.py +0 -0
  543. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/face_to_edge.py +0 -0
  544. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/feature_propagation.py +0 -0
  545. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/fixed_points.py +0 -0
  546. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/gcn_norm.py +0 -0
  547. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/gdc.py +0 -0
  548. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/generate_mesh_normals.py +0 -0
  549. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/grid_sampling.py +0 -0
  550. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/half_hop.py +0 -0
  551. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/knn_graph.py +0 -0
  552. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/laplacian_lambda_max.py +0 -0
  553. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/largest_connected_components.py +0 -0
  554. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/line_graph.py +0 -0
  555. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/linear_transformation.py +0 -0
  556. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/local_cartesian.py +0 -0
  557. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/local_degree_profile.py +0 -0
  558. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/mask.py +0 -0
  559. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/node_property_split.py +0 -0
  560. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/normalize_features.py +0 -0
  561. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/normalize_rotation.py +0 -0
  562. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/normalize_scale.py +0 -0
  563. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/one_hot_degree.py +0 -0
  564. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/pad.py +0 -0
  565. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/point_pair_features.py +0 -0
  566. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/polar.py +0 -0
  567. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/radius_graph.py +0 -0
  568. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/random_flip.py +0 -0
  569. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/random_jitter.py +0 -0
  570. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/random_link_split.py +0 -0
  571. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/random_node_split.py +0 -0
  572. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/random_rotate.py +0 -0
  573. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/random_scale.py +0 -0
  574. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/random_shear.py +0 -0
  575. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/remove_duplicated_edges.py +0 -0
  576. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/remove_isolated_nodes.py +0 -0
  577. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/remove_self_loops.py +0 -0
  578. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/remove_training_classes.py +0 -0
  579. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/rooted_subgraph.py +0 -0
  580. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/sample_points.py +0 -0
  581. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/sign.py +0 -0
  582. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/spherical.py +0 -0
  583. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/svd_feature_reduction.py +0 -0
  584. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/target_indegree.py +0 -0
  585. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/to_dense.py +0 -0
  586. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/to_device.py +0 -0
  587. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/to_sparse_tensor.py +0 -0
  588. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/to_superpixels.py +0 -0
  589. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/to_undirected.py +0 -0
  590. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/two_hop.py +0 -0
  591. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/transforms/virtual_node.py +0 -0
  592. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/typing.py +0 -0
  593. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/__init__.py +0 -0
  594. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_assortativity.py +0 -0
  595. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_coalesce.py +0 -0
  596. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_degree.py +0 -0
  597. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_grid.py +0 -0
  598. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_homophily.py +0 -0
  599. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_index_sort.py +0 -0
  600. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_lexsort.py +0 -0
  601. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_negative_sampling.py +0 -0
  602. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_normalize_edge_index.py +0 -0
  603. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_normalized_cut.py +0 -0
  604. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_one_hot.py +0 -0
  605. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_scatter.py +0 -0
  606. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_segment.py +0 -0
  607. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_select.py +0 -0
  608. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_softmax.py +0 -0
  609. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_sort_edge_index.py +0 -0
  610. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_spmm.py +0 -0
  611. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_subgraph.py +0 -0
  612. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_to_dense_adj.py +0 -0
  613. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_to_dense_batch.py +0 -0
  614. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_train_test_split_edges.py +0 -0
  615. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_tree_decomposition.py +0 -0
  616. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_trim_to_layer.py +0 -0
  617. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/_unbatch.py +0 -0
  618. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/augmentation.py +0 -0
  619. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/convert.py +0 -0
  620. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/cross_entropy.py +0 -0
  621. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/dropout.py +0 -0
  622. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/embedding.py +0 -0
  623. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/functions.py +0 -0
  624. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/geodesic.py +0 -0
  625. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/hetero.py +0 -0
  626. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/isolated.py +0 -0
  627. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/laplacian.py +0 -0
  628. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/loop.py +0 -0
  629. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/map.py +0 -0
  630. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/mask.py +0 -0
  631. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/mesh_laplacian.py +0 -0
  632. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/mixin.py +0 -0
  633. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/nested.py +0 -0
  634. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/noise_scheduler.py +0 -0
  635. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/num_nodes.py +0 -0
  636. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/ppr.py +0 -0
  637. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/random.py +0 -0
  638. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/repeat.py +0 -0
  639. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/smiles.py +0 -0
  640. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/sparse.py +0 -0
  641. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/utils/undirected.py +0 -0
  642. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/torch_geometric/visualization/influence.py +0 -0
  643. {pyg_nightly-2.7.0.dev20250428 → pyg_nightly-2.7.0.dev20250429}/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.dev20250428
3
+ Version: 2.7.0.dev20250429
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.dev20250428"
7
+ version="2.7.0.dev20250429"
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.dev20250428'
34
+ __version__ = '2.7.0.dev20250429'
35
35
 
36
36
  __all__ = [
37
37
  'Index',
@@ -1,5 +1,5 @@
1
1
  import copy
2
- from typing import Dict, List, Optional, Union
2
+ from typing import Dict, List, Optional, Tuple, Union
3
3
 
4
4
  import torch
5
5
  from torch import Tensor
@@ -8,7 +8,10 @@ from torch_geometric.data.data import Data, warn_or_raise
8
8
  from torch_geometric.data.hetero_data import HeteroData
9
9
  from torch_geometric.explain.config import ThresholdConfig, ThresholdType
10
10
  from torch_geometric.typing import EdgeType, NodeType
11
- from torch_geometric.visualization import visualize_graph
11
+ from torch_geometric.visualization import (
12
+ visualize_graph,
13
+ visualize_hetero_graph,
14
+ )
12
15
 
13
16
 
14
17
  class ExplanationMixin:
@@ -362,6 +365,87 @@ class HeteroExplanation(HeteroData, ExplanationMixin):
362
365
 
363
366
  return _visualize_score(score, all_feat_labels, path, top_k)
364
367
 
368
+ def visualize_graph(
369
+ self,
370
+ path: Optional[str] = None,
371
+ node_labels: Optional[Dict[NodeType, List[str]]] = None,
372
+ node_size_range: Tuple[float, float] = (50, 500),
373
+ node_opacity_range: Tuple[float, float] = (0.2, 1.0),
374
+ edge_width_range: Tuple[float, float] = (0.1, 2.0),
375
+ edge_opacity_range: Tuple[float, float] = (0.2, 1.0),
376
+ ) -> None:
377
+ r"""Visualizes the explanation subgraph using networkx, with edge
378
+ opacity corresponding to edge importance and node colors
379
+ corresponding to node types.
380
+
381
+ Args:
382
+ path (str, optional): The path to where the plot is saved.
383
+ If set to :obj:`None`, will visualize the plot on-the-fly.
384
+ (default: :obj:`None`)
385
+ node_labels (Dict[NodeType, List[str]], optional): The display
386
+ names of nodes for each node type that will be shown in the
387
+ visualization. (default: :obj:`None`)
388
+ node_size_range (Tuple[float, float], optional): The minimum and
389
+ maximum node size in the visualization.
390
+ (default: :obj:`(50, 500)`)
391
+ node_opacity_range (Tuple[float, float], optional): The minimum and
392
+ maximum node opacity in the visualization.
393
+ (default: :obj:`(0.2, 1.0)`)
394
+ edge_width_range (Tuple[float, float], optional): The minimum and
395
+ maximum edge width in the visualization.
396
+ (default: :obj:`(0.1, 2.0)`)
397
+ edge_opacity_range (Tuple[float, float], optional): The minimum and
398
+ maximum edge opacity in the visualization.
399
+ (default: :obj:`(0.2, 1.0)`)
400
+ """
401
+ # Validate node labels if provided
402
+ if node_labels is not None:
403
+ for node_type, labels in node_labels.items():
404
+ if node_type not in self.node_types:
405
+ raise ValueError(
406
+ f"Node type '{node_type}' in node_labels "
407
+ f"does not exist in the explanation graph")
408
+ if len(labels) != self[node_type].num_nodes:
409
+ raise ValueError(f"Number of labels for node type "
410
+ f"'{node_type}' (got {len(labels)}) does "
411
+ f"not match the number of nodes "
412
+ f"(got {self[node_type].num_nodes})")
413
+ # Get the explanation subgraph
414
+ subgraph = self.get_explanation_subgraph()
415
+
416
+ # Prepare edge indices and weights for each edge type
417
+ edge_index_dict = {}
418
+ edge_weight_dict = {}
419
+ for edge_type in subgraph.edge_types:
420
+ if edge_type[0] == 'x' or edge_type[-1] == 'x': # Skip edges
421
+ continue
422
+ edge_index_dict[edge_type] = subgraph[edge_type].edge_index
423
+ edge_weight_dict[edge_type] = subgraph[edge_type].get(
424
+ 'edge_mask',
425
+ torch.ones(subgraph[edge_type].edge_index.size(1)))
426
+
427
+ # Prepare node weights for each node type
428
+ node_weight_dict = {}
429
+ for node_type in subgraph.node_types:
430
+ if node_type == 'x': # Skip the global store
431
+ continue
432
+ node_weight_dict[node_type] = subgraph[node_type] \
433
+ .get('node_mask',
434
+ torch.ones(subgraph[node_type].num_nodes)).squeeze(-1)
435
+
436
+ # Call the visualization function
437
+ visualize_hetero_graph(
438
+ edge_index_dict=edge_index_dict,
439
+ edge_weight_dict=edge_weight_dict,
440
+ path=path,
441
+ node_labels_dict=node_labels,
442
+ node_weight_dict=node_weight_dict,
443
+ node_size_range=node_size_range,
444
+ node_opacity_range=node_opacity_range,
445
+ edge_width_range=edge_width_range,
446
+ edge_opacity_range=edge_opacity_range,
447
+ )
448
+
365
449
 
366
450
  def _visualize_score(
367
451
  score: torch.Tensor,
@@ -1,9 +1,10 @@
1
1
  r"""Visualization package."""
2
2
 
3
- from .graph import visualize_graph
3
+ from .graph import visualize_graph, visualize_hetero_graph
4
4
  from .influence import influence
5
5
 
6
6
  __all__ = [
7
7
  'visualize_graph',
8
+ 'visualize_hetero_graph',
8
9
  'influence',
9
10
  ]
@@ -0,0 +1,398 @@
1
+ from math import sqrt
2
+ from typing import Any, Dict, List, Optional, Set, Tuple
3
+
4
+ import torch
5
+ from torch import Tensor
6
+
7
+ BACKENDS = {'graphviz', 'networkx'}
8
+
9
+
10
+ def has_graphviz() -> bool:
11
+ try:
12
+ import graphviz
13
+ except ImportError:
14
+ return False
15
+
16
+ try:
17
+ graphviz.Digraph().pipe()
18
+ except graphviz.backend.ExecutableNotFound:
19
+ return False
20
+
21
+ return True
22
+
23
+
24
+ def visualize_graph(
25
+ edge_index: Tensor,
26
+ edge_weight: Optional[Tensor] = None,
27
+ path: Optional[str] = None,
28
+ backend: Optional[str] = None,
29
+ node_labels: Optional[List[str]] = None,
30
+ ) -> Any:
31
+ r"""Visualizes the graph given via :obj:`edge_index` and (optional)
32
+ :obj:`edge_weight`.
33
+
34
+ Args:
35
+ edge_index (torch.Tensor): The edge indices.
36
+ edge_weight (torch.Tensor, optional): The edge weights.
37
+ path (str, optional): The path to where the plot is saved.
38
+ If set to :obj:`None`, will visualize the plot on-the-fly.
39
+ (default: :obj:`None`)
40
+ backend (str, optional): The graph drawing backend to use for
41
+ visualization (:obj:`"graphviz"`, :obj:`"networkx"`).
42
+ If set to :obj:`None`, will use the most appropriate
43
+ visualization backend based on available system packages.
44
+ (default: :obj:`None`)
45
+ node_labels (List[str], optional): The labels/IDs of nodes.
46
+ (default: :obj:`None`)
47
+ """
48
+ if edge_weight is not None: # Normalize edge weights.
49
+ edge_weight = edge_weight - edge_weight.min()
50
+ edge_weight = edge_weight / edge_weight.max()
51
+
52
+ if edge_weight is not None: # Discard any edges with zero edge weight:
53
+ mask = edge_weight > 1e-7
54
+ edge_index = edge_index[:, mask]
55
+ edge_weight = edge_weight[mask]
56
+
57
+ if edge_weight is None:
58
+ edge_weight = torch.ones(edge_index.size(1))
59
+
60
+ if backend is None:
61
+ backend = 'graphviz' if has_graphviz() else 'networkx'
62
+
63
+ if backend.lower() == 'networkx':
64
+ return _visualize_graph_via_networkx(edge_index, edge_weight, path,
65
+ node_labels)
66
+ elif backend.lower() == 'graphviz':
67
+ return _visualize_graph_via_graphviz(edge_index, edge_weight, path,
68
+ node_labels)
69
+
70
+ raise ValueError(f"Expected graph drawing backend to be in "
71
+ f"{BACKENDS} (got '{backend}')")
72
+
73
+
74
+ def _visualize_graph_via_graphviz(
75
+ edge_index: Tensor,
76
+ edge_weight: Tensor,
77
+ path: Optional[str] = None,
78
+ node_labels: Optional[List[str]] = None,
79
+ ) -> Any:
80
+ import graphviz
81
+
82
+ suffix = path.split('.')[-1] if path is not None else None
83
+ g = graphviz.Digraph('graph', format=suffix)
84
+ g.attr('node', shape='circle', fontsize='11pt')
85
+
86
+ for node in edge_index.view(-1).unique().tolist():
87
+ g.node(str(node) if node_labels is None else node_labels[node])
88
+
89
+ for (src, dst), w in zip(edge_index.t().tolist(), edge_weight.tolist()):
90
+ hex_color = hex(255 - round(255 * w))[2:]
91
+ hex_color = f'{hex_color}0' if len(hex_color) == 1 else hex_color
92
+ if node_labels is not None:
93
+ src = node_labels[src]
94
+ dst = node_labels[dst]
95
+ g.edge(str(src), str(dst), color=f'#{hex_color}{hex_color}{hex_color}')
96
+
97
+ if path is not None:
98
+ path = '.'.join(path.split('.')[:-1])
99
+ g.render(path, cleanup=True)
100
+ else:
101
+ g.view()
102
+
103
+ return g
104
+
105
+
106
+ def _visualize_graph_via_networkx(
107
+ edge_index: Tensor,
108
+ edge_weight: Tensor,
109
+ path: Optional[str] = None,
110
+ node_labels: Optional[List[str]] = None,
111
+ ) -> Any:
112
+ import matplotlib.pyplot as plt
113
+ import networkx as nx
114
+
115
+ g = nx.DiGraph()
116
+ node_size = 800
117
+
118
+ for node in edge_index.view(-1).unique().tolist():
119
+ g.add_node(node if node_labels is None else node_labels[node])
120
+
121
+ for (src, dst), w in zip(edge_index.t().tolist(), edge_weight.tolist()):
122
+ if node_labels is not None:
123
+ src = node_labels[src]
124
+ dst = node_labels[dst]
125
+ g.add_edge(src, dst, alpha=w)
126
+
127
+ ax = plt.gca()
128
+ pos = nx.spring_layout(g)
129
+ for src, dst, data in g.edges(data=True):
130
+ ax.annotate(
131
+ '',
132
+ xy=pos[src],
133
+ xytext=pos[dst],
134
+ arrowprops=dict(
135
+ arrowstyle="<-",
136
+ alpha=data['alpha'],
137
+ shrinkA=sqrt(node_size) / 2.0,
138
+ shrinkB=sqrt(node_size) / 2.0,
139
+ connectionstyle="arc3,rad=0.1",
140
+ ),
141
+ )
142
+
143
+ nx.draw_networkx_nodes(g, pos, node_size=node_size, node_color='white',
144
+ margins=0.1, edgecolors='black')
145
+ nx.draw_networkx_labels(g, pos, font_size=10)
146
+
147
+ if path is not None:
148
+ plt.savefig(path)
149
+ else:
150
+ plt.show()
151
+
152
+ plt.close()
153
+
154
+
155
+ def visualize_hetero_graph(
156
+ edge_index_dict: Dict[Tuple[str, str, str], Tensor],
157
+ edge_weight_dict: Dict[Tuple[str, str, str], Tensor],
158
+ path: Optional[str] = None,
159
+ backend: Optional[str] = None,
160
+ node_labels_dict: Optional[Dict[str, List[str]]] = None,
161
+ node_weight_dict: Optional[Dict[str, Tensor]] = None,
162
+ node_size_range: Tuple[float, float] = (50, 500),
163
+ node_opacity_range: Tuple[float, float] = (0.2, 1.0),
164
+ edge_width_range: Tuple[float, float] = (0.1, 2.0),
165
+ edge_opacity_range: Tuple[float, float] = (0.2, 1.0),
166
+ ) -> Any:
167
+ """Visualizes a heterogeneous graph using networkx."""
168
+ if backend is not None and backend != "networkx":
169
+ raise ValueError("Only 'networkx' backend is supported")
170
+
171
+ # Filter out edges with 0 weight
172
+ filtered_edge_index_dict = {}
173
+ filtered_edge_weight_dict = {}
174
+ for edge_type in edge_index_dict.keys():
175
+ mask = edge_weight_dict[edge_type] > 0
176
+ if mask.sum() > 0:
177
+ filtered_edge_index_dict[edge_type] = edge_index_dict[
178
+ edge_type][:, mask]
179
+ filtered_edge_weight_dict[edge_type] = edge_weight_dict[edge_type][
180
+ mask]
181
+
182
+ # Get all unique nodes that are still in the filtered edges
183
+ remaining_nodes: Dict[str, Set[int]] = {}
184
+ for edge_type, edge_index in filtered_edge_index_dict.items():
185
+ src_type, _, dst_type = edge_type
186
+ if src_type not in remaining_nodes:
187
+ remaining_nodes[src_type] = set()
188
+ if dst_type not in remaining_nodes:
189
+ remaining_nodes[dst_type] = set()
190
+ remaining_nodes[src_type].update(edge_index[0].tolist())
191
+ remaining_nodes[dst_type].update(edge_index[1].tolist())
192
+
193
+ # Filter node weights to only include remaining nodes
194
+ if node_weight_dict is not None:
195
+ filtered_node_weight_dict = {}
196
+ for node_type, weights in node_weight_dict.items():
197
+ if node_type in remaining_nodes:
198
+ mask = torch.zeros(len(weights), dtype=torch.bool)
199
+ mask[list(remaining_nodes[node_type])] = True
200
+ filtered_node_weight_dict[node_type] = weights[mask]
201
+ node_weight_dict = filtered_node_weight_dict
202
+
203
+ # Filter node labels to only include remaining nodes
204
+ if node_labels_dict is not None:
205
+ filtered_node_labels_dict = {}
206
+ for node_type, labels in node_labels_dict.items():
207
+ if node_type in remaining_nodes:
208
+ filtered_node_labels_dict[node_type] = [
209
+ label for i, label in enumerate(labels)
210
+ if i in remaining_nodes[node_type]
211
+ ]
212
+ node_labels_dict = filtered_node_labels_dict
213
+
214
+ return _visualize_hetero_graph_via_networkx(
215
+ filtered_edge_index_dict,
216
+ filtered_edge_weight_dict,
217
+ path,
218
+ node_labels_dict,
219
+ node_weight_dict,
220
+ node_size_range,
221
+ node_opacity_range,
222
+ edge_width_range,
223
+ edge_opacity_range,
224
+ )
225
+
226
+
227
+ def _visualize_hetero_graph_via_networkx(
228
+ edge_index_dict: Dict[Tuple[str, str, str], Tensor],
229
+ edge_weight_dict: Dict[Tuple[str, str, str], Tensor],
230
+ path: Optional[str] = None,
231
+ node_labels_dict: Optional[Dict[str, List[str]]] = None,
232
+ node_weight_dict: Optional[Dict[str, Tensor]] = None,
233
+ node_size_range: Tuple[float, float] = (50, 500),
234
+ node_opacity_range: Tuple[float, float] = (0.2, 1.0),
235
+ edge_width_range: Tuple[float, float] = (0.1, 2.0),
236
+ edge_opacity_range: Tuple[float, float] = (0.2, 1.0),
237
+ ) -> Any:
238
+ import matplotlib.pyplot as plt
239
+ import networkx as nx
240
+
241
+ g = nx.DiGraph()
242
+ node_offsets: Dict[str, int] = {}
243
+ current_offset = 0
244
+
245
+ # First, collect all unique node types and their counts
246
+ node_types = set()
247
+ node_counts: Dict[str, int] = {}
248
+ remaining_nodes: Dict[str, Set[int]] = {
249
+ } # Track which nodes are actually present in edges
250
+
251
+ # Get all unique nodes that are in the edges
252
+ for edge_type in edge_index_dict.keys():
253
+ src_type, _, dst_type = edge_type
254
+ node_types.add(src_type)
255
+ node_types.add(dst_type)
256
+
257
+ if src_type not in remaining_nodes:
258
+ remaining_nodes[src_type] = set()
259
+ if dst_type not in remaining_nodes:
260
+ remaining_nodes[dst_type] = set()
261
+
262
+ remaining_nodes[src_type].update(
263
+ edge_index_dict[edge_type][0].tolist())
264
+ remaining_nodes[dst_type].update(
265
+ edge_index_dict[edge_type][1].tolist())
266
+
267
+ # Set node counts based on remaining nodes
268
+ for node_type in node_types:
269
+ node_counts[node_type] = len(remaining_nodes[node_type])
270
+
271
+ # Add nodes for each node type
272
+ for node_type in node_types:
273
+ num_nodes = node_counts[node_type]
274
+ node_offsets[node_type] = current_offset
275
+
276
+ # Get node weights if provided
277
+ weights = None
278
+ if node_weight_dict is not None and node_type in node_weight_dict:
279
+ weights = node_weight_dict[node_type]
280
+ if len(weights) != num_nodes:
281
+ raise ValueError(f"Number of weights for node type "
282
+ f"{node_type} ({len(weights)}) does not "
283
+ f"match number of nodes ({num_nodes})")
284
+
285
+ for i in range(num_nodes):
286
+ node_id = current_offset + i
287
+ label = (node_labels_dict[node_type][i]
288
+ if node_labels_dict is not None
289
+ and node_type in node_labels_dict else "")
290
+
291
+ # Calculate node size and opacity if weights provided
292
+ size = node_size_range[1]
293
+ opacity = node_opacity_range[1]
294
+ if weights is not None:
295
+ w = weights[i].item()
296
+ size = node_size_range[0] + w * \
297
+ (node_size_range[1] - node_size_range[0])
298
+ opacity = node_opacity_range[0] + w * \
299
+ (node_opacity_range[1] - node_opacity_range[0])
300
+
301
+ g.add_node(node_id, label=label, type=node_type, size=size,
302
+ alpha=opacity)
303
+
304
+ current_offset += num_nodes
305
+
306
+ # Add edges with remapped node indices
307
+ for edge_type, edge_index in edge_index_dict.items():
308
+ src_type, _, dst_type = edge_type
309
+ edge_weight = edge_weight_dict[edge_type]
310
+ src_offset = node_offsets[src_type]
311
+ dst_offset = node_offsets[dst_type]
312
+
313
+ # Create mappings for source and target nodes
314
+ src_mapping = {
315
+ old_idx: new_idx
316
+ for new_idx, old_idx in enumerate(sorted(
317
+ remaining_nodes[src_type]))
318
+ }
319
+ dst_mapping = {
320
+ old_idx: new_idx
321
+ for new_idx, old_idx in enumerate(sorted(
322
+ remaining_nodes[dst_type]))
323
+ }
324
+
325
+ for (src, dst), w in zip(edge_index.t().tolist(),
326
+ edge_weight.tolist()):
327
+ # Remap node indices
328
+ new_src = src_mapping[src] + src_offset
329
+ new_dst = dst_mapping[dst] + dst_offset
330
+
331
+ # Calculate edge width and opacity based on weight
332
+ width = edge_width_range[0] + w * \
333
+ (edge_width_range[1] - edge_width_range[0])
334
+ opacity = edge_opacity_range[0] + w * \
335
+ (edge_opacity_range[1] - edge_opacity_range[0])
336
+ g.add_edge(new_src, new_dst, width=width, alpha=opacity)
337
+
338
+ # Draw the graph
339
+ ax = plt.gca()
340
+ pos = nx.arf_layout(g)
341
+
342
+ # Draw edges with arrows
343
+ for src, dst, data in g.edges(data=True):
344
+ ax.annotate(
345
+ '',
346
+ xy=pos[src],
347
+ xytext=pos[dst],
348
+ arrowprops=dict(
349
+ arrowstyle="<-",
350
+ alpha=data['alpha'],
351
+ linewidth=data['width'],
352
+ shrinkA=sqrt(g.nodes[src]['size']) / 2.0,
353
+ shrinkB=sqrt(g.nodes[dst]['size']) / 2.0,
354
+ connectionstyle="arc3,rad=0.1",
355
+ ),
356
+ )
357
+
358
+ # Draw nodes colored by type
359
+ node_colors = []
360
+ node_sizes = []
361
+ node_alphas = []
362
+
363
+ # Use matplotlib tab20 colormap for consistent coloring
364
+ tab10_cmap = plt.cm.tab10 # type: ignore[attr-defined]
365
+ node_type_colors: Dict[str, Any] = {} # Store color for each node type
366
+ for node in g.nodes():
367
+ node_type = g.nodes[node]['type']
368
+ # Assign a consistent color for each node type
369
+ if node_type not in node_type_colors:
370
+ color_idx = len(node_type_colors) % 10 # Cycle through colors
371
+ node_type_colors[node_type] = tab10_cmap(color_idx)
372
+ node_colors.append(node_type_colors[node_type])
373
+ node_sizes.append(g.nodes[node]['size'])
374
+ node_alphas.append(g.nodes[node]['alpha'])
375
+
376
+ nx.draw_networkx_nodes(g, pos, node_size=node_sizes,
377
+ node_color=node_colors, margins=0.1,
378
+ alpha=node_alphas)
379
+
380
+ # Draw labels
381
+ labels = nx.get_node_attributes(g, 'label')
382
+ nx.draw_networkx_labels(g, pos, labels, font_size=10)
383
+
384
+ # Add legend
385
+ legend_elements = []
386
+ for node_type, color in node_type_colors.items():
387
+ legend_elements.append(
388
+ plt.Line2D([0], [0], marker='o', color='w', label=node_type,
389
+ markerfacecolor=color, markersize=10))
390
+ ax.legend(handles=legend_elements, loc='upper right',
391
+ bbox_to_anchor=(0.9, 1))
392
+
393
+ if path is not None:
394
+ plt.savefig(path, bbox_inches='tight')
395
+ else:
396
+ plt.show()
397
+
398
+ plt.close()
@@ -1,152 +0,0 @@
1
- from math import sqrt
2
- from typing import Any, List, Optional
3
-
4
- import torch
5
- from torch import Tensor
6
-
7
- BACKENDS = {'graphviz', 'networkx'}
8
-
9
-
10
- def has_graphviz() -> bool:
11
- try:
12
- import graphviz
13
- except ImportError:
14
- return False
15
-
16
- try:
17
- graphviz.Digraph().pipe()
18
- except graphviz.backend.ExecutableNotFound:
19
- return False
20
-
21
- return True
22
-
23
-
24
- def visualize_graph(
25
- edge_index: Tensor,
26
- edge_weight: Optional[Tensor] = None,
27
- path: Optional[str] = None,
28
- backend: Optional[str] = None,
29
- node_labels: Optional[List[str]] = None,
30
- ) -> Any:
31
- r"""Visualizes the graph given via :obj:`edge_index` and (optional)
32
- :obj:`edge_weight`.
33
-
34
- Args:
35
- edge_index (torch.Tensor): The edge indices.
36
- edge_weight (torch.Tensor, optional): The edge weights.
37
- path (str, optional): The path to where the plot is saved.
38
- If set to :obj:`None`, will visualize the plot on-the-fly.
39
- (default: :obj:`None`)
40
- backend (str, optional): The graph drawing backend to use for
41
- visualization (:obj:`"graphviz"`, :obj:`"networkx"`).
42
- If set to :obj:`None`, will use the most appropriate
43
- visualization backend based on available system packages.
44
- (default: :obj:`None`)
45
- node_labels (List[str], optional): The labels/IDs of nodes.
46
- (default: :obj:`None`)
47
- """
48
- if edge_weight is not None: # Normalize edge weights.
49
- edge_weight = edge_weight - edge_weight.min()
50
- edge_weight = edge_weight / edge_weight.max()
51
-
52
- if edge_weight is not None: # Discard any edges with zero edge weight:
53
- mask = edge_weight > 1e-7
54
- edge_index = edge_index[:, mask]
55
- edge_weight = edge_weight[mask]
56
-
57
- if edge_weight is None:
58
- edge_weight = torch.ones(edge_index.size(1))
59
-
60
- if backend is None:
61
- backend = 'graphviz' if has_graphviz() else 'networkx'
62
-
63
- if backend.lower() == 'networkx':
64
- return _visualize_graph_via_networkx(edge_index, edge_weight, path,
65
- node_labels)
66
- elif backend.lower() == 'graphviz':
67
- return _visualize_graph_via_graphviz(edge_index, edge_weight, path,
68
- node_labels)
69
-
70
- raise ValueError(f"Expected graph drawing backend to be in "
71
- f"{BACKENDS} (got '{backend}')")
72
-
73
-
74
- def _visualize_graph_via_graphviz(
75
- edge_index: Tensor,
76
- edge_weight: Tensor,
77
- path: Optional[str] = None,
78
- node_labels: Optional[List[str]] = None,
79
- ) -> Any:
80
- import graphviz
81
-
82
- suffix = path.split('.')[-1] if path is not None else None
83
- g = graphviz.Digraph('graph', format=suffix)
84
- g.attr('node', shape='circle', fontsize='11pt')
85
-
86
- for node in edge_index.view(-1).unique().tolist():
87
- g.node(str(node) if node_labels is None else node_labels[node])
88
-
89
- for (src, dst), w in zip(edge_index.t().tolist(), edge_weight.tolist()):
90
- hex_color = hex(255 - round(255 * w))[2:]
91
- hex_color = f'{hex_color}0' if len(hex_color) == 1 else hex_color
92
- if node_labels is not None:
93
- src = node_labels[src]
94
- dst = node_labels[dst]
95
- g.edge(str(src), str(dst), color=f'#{hex_color}{hex_color}{hex_color}')
96
-
97
- if path is not None:
98
- path = '.'.join(path.split('.')[:-1])
99
- g.render(path, cleanup=True)
100
- else:
101
- g.view()
102
-
103
- return g
104
-
105
-
106
- def _visualize_graph_via_networkx(
107
- edge_index: Tensor,
108
- edge_weight: Tensor,
109
- path: Optional[str] = None,
110
- node_labels: Optional[List[str]] = None,
111
- ) -> Any:
112
- import matplotlib.pyplot as plt
113
- import networkx as nx
114
-
115
- g = nx.DiGraph()
116
- node_size = 800
117
-
118
- for node in edge_index.view(-1).unique().tolist():
119
- g.add_node(node if node_labels is None else node_labels[node])
120
-
121
- for (src, dst), w in zip(edge_index.t().tolist(), edge_weight.tolist()):
122
- if node_labels is not None:
123
- src = node_labels[src]
124
- dst = node_labels[dst]
125
- g.add_edge(src, dst, alpha=w)
126
-
127
- ax = plt.gca()
128
- pos = nx.spring_layout(g)
129
- for src, dst, data in g.edges(data=True):
130
- ax.annotate(
131
- '',
132
- xy=pos[src],
133
- xytext=pos[dst],
134
- arrowprops=dict(
135
- arrowstyle="<-",
136
- alpha=data['alpha'],
137
- shrinkA=sqrt(node_size) / 2.0,
138
- shrinkB=sqrt(node_size) / 2.0,
139
- connectionstyle="arc3,rad=0.1",
140
- ),
141
- )
142
-
143
- nx.draw_networkx_nodes(g, pos, node_size=node_size, node_color='white',
144
- margins=0.1, edgecolors='black')
145
- nx.draw_networkx_labels(g, pos, font_size=10)
146
-
147
- if path is not None:
148
- plt.savefig(path)
149
- else:
150
- plt.show()
151
-
152
- plt.close()