equiformer-v3 0.0.0__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 (456) hide show
  1. equiformer_v3-0.0.0/PKG-INFO +398 -0
  2. equiformer_v3-0.0.0/README.md +378 -0
  3. equiformer_v3-0.0.0/pyproject.toml +36 -0
  4. equiformer_v3-0.0.0/src/equiformer_v3/__init__.py +6 -0
  5. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/LICENSE.md +9 -0
  6. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/MODELS.md +13 -0
  7. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/README.md +65 -0
  8. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/__init__.py +0 -0
  9. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/adsorbml/2023_neurips_challenge/README.md +17 -0
  10. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/adsorbml/2023_neurips_challenge/challenge_eval.py +195 -0
  11. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/adsorbml/2023_neurips_challenge/oc20dense_val_targets.pkl +0 -0
  12. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/adsorbml/configs/dpp.yml +61 -0
  13. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/adsorbml/configs/gemnet-oc-large.yml +109 -0
  14. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/adsorbml/configs/gemnet-oc.yml +109 -0
  15. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/adsorbml/configs/painn.yml +66 -0
  16. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/adsorbml/configs/schnet.yml +56 -0
  17. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/adsorbml/configs/scn_md_large.yml +77 -0
  18. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/adsorbml/scripts/README.md +37 -0
  19. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/adsorbml/scripts/dense_eval.py +335 -0
  20. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/adsorbml/scripts/process_mlrs.py +176 -0
  21. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/adsorbml/scripts/utils.py +75 -0
  22. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/adsorbml/scripts/write_top_k_vasp.py +95 -0
  23. equiformer_v3-0.0.0/src/equiformer_v3/applications/AdsorbML/tutorials/adsorbml_walkthrough.ipynb +794 -0
  24. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/DATASET.md +49 -0
  25. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/README.md +44 -0
  26. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/__init__.py +16 -0
  27. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/core/__init__.py +6 -0
  28. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/core/autoframe.py +1688 -0
  29. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/core/ocpneb.py +307 -0
  30. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/core/reaction.py +99 -0
  31. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/databases/__init__.py +9 -0
  32. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/databases/desorptions_9Aug23.pkl +0 -0
  33. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/databases/dissociation_reactions_22May24.pkl +0 -0
  34. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/databases/transfers_5Sept23.pkl +0 -0
  35. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/run_validation/mapping_files/desorption_mapping.pkl +0 -0
  36. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/run_validation/mapping_files/dissociation_mapping.pkl +0 -0
  37. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/run_validation/mapping_files/transfer_mapping.pkl +0 -0
  38. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/run_validation/run_validation.py +436 -0
  39. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/run_validation/run_validation.sh +13 -0
  40. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/summary_fig.png +0 -0
  41. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/tutorial/adding_a_rxn_to_the_db.ipynb +607 -0
  42. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/tutorial/cattsunami_tutorial.ipynb +362 -0
  43. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/tutorial/dissociation_scheme.png +0 -0
  44. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/tutorial/fairchem_models_for_nebs.ipynb +229 -0
  45. equiformer_v3-0.0.0/src/equiformer_v3/applications/cattsunami/tutorial/sample_traj.traj +0 -0
  46. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/README.md +25 -0
  47. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/__init__.py +16 -0
  48. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/analysis/README.md +5 -0
  49. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/analysis/ml_inference.py +332 -0
  50. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/analysis/ml_train.py +275 -0
  51. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/co2rr_summary_figure.png +0 -0
  52. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/core/__init__.py +1 -0
  53. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/core/data_handling.py +686 -0
  54. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/core/features.py +47 -0
  55. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/core/voltage.py +144 -0
  56. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/core/wulff.py +44 -0
  57. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/README.md +117 -0
  58. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/computational_data/README.md +5 -0
  59. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/computational_data/cod_matches_lookup.pkl +0 -0
  60. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/computational_data/her_candidates.csv +3870 -0
  61. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/experimental_data/ExpDataDump_241113.csv +5413 -0
  62. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/experimental_data/ExpDataDump_241113_clean.csv +2605 -0
  63. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/experimental_data/README.md +18 -0
  64. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/experimental_data/XRDDataDump-241113.csv +579 -0
  65. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/experimental_data/XRFDataDump-241113.csv +639 -0
  66. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/experimental_data/supporting_data/batches_info.csv +34 -0
  67. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/experimental_data/supporting_data/materials_id-241113.csv +979 -0
  68. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/experimental_data/supporting_data/materials_postprocessing_id-241113.csv +2 -0
  69. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/experimental_data/supporting_data/vsp_synthesis_params.csv +546 -0
  70. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/processed_data/CO2R_40_70_all.csv +180 -0
  71. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/processed_data/CO2R_40_70_matched.csv +44 -0
  72. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/processed_data/HER_40_70_all.csv +180 -0
  73. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/processed_data/HER_40_70_matched.csv +44 -0
  74. equiformer_v3-0.0.0/src/equiformer_v3/applications/ocx/data/processed_data/README.md +13 -0
  75. equiformer_v3-0.0.0/src/equiformer_v3/core/LICENSE.md +22 -0
  76. equiformer_v3-0.0.0/src/equiformer_v3/core/README.md +49 -0
  77. equiformer_v3-0.0.0/src/equiformer_v3/core/TRAIN.md +461 -0
  78. equiformer_v3-0.0.0/src/equiformer_v3/core/__init__.py +20 -0
  79. equiformer_v3-0.0.0/src/equiformer_v3/core/_cli.py +133 -0
  80. equiformer_v3-0.0.0/src/equiformer_v3/core/_cli_hydra.py +471 -0
  81. equiformer_v3-0.0.0/src/equiformer_v3/core/common/__init__.py +6 -0
  82. equiformer_v3-0.0.0/src/equiformer_v3/core/common/data_parallel.py +262 -0
  83. equiformer_v3-0.0.0/src/equiformer_v3/core/common/distutils.py +258 -0
  84. equiformer_v3-0.0.0/src/equiformer_v3/core/common/flags.py +137 -0
  85. equiformer_v3-0.0.0/src/equiformer_v3/core/common/gp_utils.py +388 -0
  86. equiformer_v3-0.0.0/src/equiformer_v3/core/common/hpo_utils.py +53 -0
  87. equiformer_v3-0.0.0/src/equiformer_v3/core/common/logger.py +290 -0
  88. equiformer_v3-0.0.0/src/equiformer_v3/core/common/profiler_utils.py +105 -0
  89. equiformer_v3-0.0.0/src/equiformer_v3/core/common/registry.py +355 -0
  90. equiformer_v3-0.0.0/src/equiformer_v3/core/common/relaxation/__init__.py +13 -0
  91. equiformer_v3-0.0.0/src/equiformer_v3/core/common/relaxation/ase_utils.py +311 -0
  92. equiformer_v3-0.0.0/src/equiformer_v3/core/common/relaxation/ml_relaxation.py +135 -0
  93. equiformer_v3-0.0.0/src/equiformer_v3/core/common/relaxation/optimizable.py +547 -0
  94. equiformer_v3-0.0.0/src/equiformer_v3/core/common/relaxation/optimizers/__init__.py +12 -0
  95. equiformer_v3-0.0.0/src/equiformer_v3/core/common/relaxation/optimizers/lbfgs_torch.py +203 -0
  96. equiformer_v3-0.0.0/src/equiformer_v3/core/common/slurm.py +30 -0
  97. equiformer_v3-0.0.0/src/equiformer_v3/core/common/test_utils.py +143 -0
  98. equiformer_v3-0.0.0/src/equiformer_v3/core/common/transforms.py +80 -0
  99. equiformer_v3-0.0.0/src/equiformer_v3/core/common/tutorial_utils.py +184 -0
  100. equiformer_v3-0.0.0/src/equiformer_v3/core/common/typing.py +19 -0
  101. equiformer_v3-0.0.0/src/equiformer_v3/core/common/utils.py +1563 -0
  102. equiformer_v3-0.0.0/src/equiformer_v3/core/components/reducer.py +76 -0
  103. equiformer_v3-0.0.0/src/equiformer_v3/core/components/runner.py +63 -0
  104. equiformer_v3-0.0.0/src/equiformer_v3/core/components/utils.py +39 -0
  105. equiformer_v3-0.0.0/src/equiformer_v3/core/datasets/__init__.py +21 -0
  106. equiformer_v3-0.0.0/src/equiformer_v3/core/datasets/_utils.py +44 -0
  107. equiformer_v3-0.0.0/src/equiformer_v3/core/datasets/ase_datasets.py +576 -0
  108. equiformer_v3-0.0.0/src/equiformer_v3/core/datasets/base_dataset.py +247 -0
  109. equiformer_v3-0.0.0/src/equiformer_v3/core/datasets/embeddings/__init__.py +13 -0
  110. equiformer_v3-0.0.0/src/equiformer_v3/core/datasets/embeddings/atomic_radii.py +111 -0
  111. equiformer_v3-0.0.0/src/equiformer_v3/core/datasets/embeddings/continuous_embeddings.py +1122 -0
  112. equiformer_v3-0.0.0/src/equiformer_v3/core/datasets/embeddings/khot_embeddings.py +9414 -0
  113. equiformer_v3-0.0.0/src/equiformer_v3/core/datasets/embeddings/qmof_khot_embeddings.py +7638 -0
  114. equiformer_v3-0.0.0/src/equiformer_v3/core/datasets/lmdb_dataset.py +194 -0
  115. equiformer_v3-0.0.0/src/equiformer_v3/core/datasets/oc22_lmdb_dataset.py +227 -0
  116. equiformer_v3-0.0.0/src/equiformer_v3/core/datasets/target_metadata_guesser.py +192 -0
  117. equiformer_v3-0.0.0/src/equiformer_v3/core/models/__init__.py +9 -0
  118. equiformer_v3-0.0.0/src/equiformer_v3/core/models/base.py +351 -0
  119. equiformer_v3-0.0.0/src/equiformer_v3/core/models/dimenet_plus_plus.py +542 -0
  120. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/Jd.pt +0 -0
  121. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/LICENSE +21 -0
  122. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/README.md +92 -0
  123. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/__init__.py +5 -0
  124. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/activation.py +186 -0
  125. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/drop.py +142 -0
  126. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/edge_rot_mat.py +55 -0
  127. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/equiformer_v2.py +611 -0
  128. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/equiformer_v2_dens.py +586 -0
  129. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/equiformer_v2_deprecated.py +680 -0
  130. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/eqv2_to_eqv2_hydra.py +96 -0
  131. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/gaussian_rbf.py +43 -0
  132. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/heads/__init__.py +7 -0
  133. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/heads/rank2.py +351 -0
  134. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/heads/scalar.py +66 -0
  135. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/heads/vector.py +84 -0
  136. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/input_block.py +130 -0
  137. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/layer_norm.py +438 -0
  138. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/module_list.py +12 -0
  139. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/radial_function.py +32 -0
  140. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/so2_ops.py +354 -0
  141. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/so3.py +699 -0
  142. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/trainers/__init__.py +0 -0
  143. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/trainers/dens_trainer.py +854 -0
  144. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/trainers/energy_trainer.py +55 -0
  145. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/trainers/forces_trainer.py +70 -0
  146. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/trainers/lr_scheduler.py +171 -0
  147. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/transformer_block.py +705 -0
  148. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/weight_initialization.py +37 -0
  149. equiformer_v3-0.0.0/src/equiformer_v3/core/models/equiformer_v2/wigner.py +42 -0
  150. equiformer_v3-0.0.0/src/equiformer_v3/core/models/escn/Jd.pt +0 -0
  151. equiformer_v3-0.0.0/src/equiformer_v3/core/models/escn/__init__.py +5 -0
  152. equiformer_v3-0.0.0/src/equiformer_v3/core/models/escn/escn.py +1105 -0
  153. equiformer_v3-0.0.0/src/equiformer_v3/core/models/escn/escn_exportable.py +928 -0
  154. equiformer_v3-0.0.0/src/equiformer_v3/core/models/escn/so3.py +526 -0
  155. equiformer_v3-0.0.0/src/equiformer_v3/core/models/escn/so3_exportable.py +341 -0
  156. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/Jd.pt +0 -0
  157. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/__init__.py +0 -0
  158. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/common/__init__.py +0 -0
  159. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/common/rotation.py +175 -0
  160. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/common/so3.py +265 -0
  161. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/esen.py +511 -0
  162. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/esen_block.py +302 -0
  163. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/esen_dens.py +579 -0
  164. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/nn/__init__.py +0 -0
  165. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/nn/activation.py +102 -0
  166. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/nn/embedding.py +122 -0
  167. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/nn/layer_norm.py +370 -0
  168. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/nn/radial.py +141 -0
  169. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/nn/rank2.py +375 -0
  170. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/nn/so2_layers.py +322 -0
  171. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/nn/so3_layers.py +52 -0
  172. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/trainers/__init__.py +0 -0
  173. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/trainers/lr_scheduler.py +178 -0
  174. equiformer_v3-0.0.0/src/equiformer_v3/core/models/esen/trainers/trainer.py +908 -0
  175. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet/__init__.py +5 -0
  176. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet/gemnet.py +708 -0
  177. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet/initializers.py +42 -0
  178. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet/layers/__init__.py +0 -0
  179. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet/layers/atom_update_block.py +201 -0
  180. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet/layers/base_layers.py +110 -0
  181. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet/layers/basis_utils.py +292 -0
  182. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet/layers/efficient.py +171 -0
  183. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet/layers/embedding_block.py +93 -0
  184. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet/layers/interaction_block.py +342 -0
  185. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet/layers/radial_basis.py +207 -0
  186. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet/layers/spherical_basis.py +97 -0
  187. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet/utils.py +277 -0
  188. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_gp/README.md +30 -0
  189. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_gp/__init__.py +5 -0
  190. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_gp/gemnet.py +620 -0
  191. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_gp/initializers.py +40 -0
  192. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_gp/layers/__init__.py +0 -0
  193. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_gp/layers/atom_update_block.py +247 -0
  194. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_gp/layers/base_layers.py +119 -0
  195. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_gp/layers/basis_utils.py +292 -0
  196. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_gp/layers/efficient.py +171 -0
  197. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_gp/layers/embedding_block.py +99 -0
  198. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_gp/layers/interaction_block.py +360 -0
  199. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_gp/layers/radial_basis.py +208 -0
  200. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_gp/layers/spherical_basis.py +97 -0
  201. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_gp/utils.py +275 -0
  202. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_oc/README.md +29 -0
  203. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_oc/__init__.py +5 -0
  204. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_oc/gemnet_oc.py +1563 -0
  205. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_oc/initializers.py +87 -0
  206. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_oc/interaction_indices.py +299 -0
  207. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_oc/layers/__init__.py +0 -0
  208. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_oc/layers/atom_update_block.py +192 -0
  209. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_oc/layers/base_layers.py +106 -0
  210. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_oc/layers/basis_utils.py +330 -0
  211. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_oc/layers/efficient.py +254 -0
  212. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_oc/layers/embedding_block.py +95 -0
  213. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_oc/layers/force_scaler.py +95 -0
  214. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_oc/layers/interaction_block.py +754 -0
  215. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_oc/layers/radial_basis.py +241 -0
  216. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_oc/layers/spherical_basis.py +139 -0
  217. equiformer_v3-0.0.0/src/equiformer_v3/core/models/gemnet_oc/utils.py +407 -0
  218. equiformer_v3-0.0.0/src/equiformer_v3/core/models/model_registry.py +96 -0
  219. equiformer_v3-0.0.0/src/equiformer_v3/core/models/painn/README.md +39 -0
  220. equiformer_v3-0.0.0/src/equiformer_v3/core/models/painn/__init__.py +5 -0
  221. equiformer_v3-0.0.0/src/equiformer_v3/core/models/painn/painn.py +718 -0
  222. equiformer_v3-0.0.0/src/equiformer_v3/core/models/painn/utils.py +161 -0
  223. equiformer_v3-0.0.0/src/equiformer_v3/core/models/pretrained_models.json +335 -0
  224. equiformer_v3-0.0.0/src/equiformer_v3/core/models/schnet.py +135 -0
  225. equiformer_v3-0.0.0/src/equiformer_v3/core/models/scn/Jd.pt +0 -0
  226. equiformer_v3-0.0.0/src/equiformer_v3/core/models/scn/README.md +22 -0
  227. equiformer_v3-0.0.0/src/equiformer_v3/core/models/scn/__init__.py +5 -0
  228. equiformer_v3-0.0.0/src/equiformer_v3/core/models/scn/sampling.py +49 -0
  229. equiformer_v3-0.0.0/src/equiformer_v3/core/models/scn/scn.py +756 -0
  230. equiformer_v3-0.0.0/src/equiformer_v3/core/models/scn/smearing.py +84 -0
  231. equiformer_v3-0.0.0/src/equiformer_v3/core/models/scn/spherical_harmonics.py +361 -0
  232. equiformer_v3-0.0.0/src/equiformer_v3/core/models/utils/__init__.py +4 -0
  233. equiformer_v3-0.0.0/src/equiformer_v3/core/models/utils/activations.py +45 -0
  234. equiformer_v3-0.0.0/src/equiformer_v3/core/models/utils/basis.py +302 -0
  235. equiformer_v3-0.0.0/src/equiformer_v3/core/modules/__init__.py +6 -0
  236. equiformer_v3-0.0.0/src/equiformer_v3/core/modules/evaluator.py +382 -0
  237. equiformer_v3-0.0.0/src/equiformer_v3/core/modules/exponential_moving_average.py +191 -0
  238. equiformer_v3-0.0.0/src/equiformer_v3/core/modules/loss.py +183 -0
  239. equiformer_v3-0.0.0/src/equiformer_v3/core/modules/normalization/__init__.py +0 -0
  240. equiformer_v3-0.0.0/src/equiformer_v3/core/modules/normalization/_load_utils.py +116 -0
  241. equiformer_v3-0.0.0/src/equiformer_v3/core/modules/normalization/element_references.py +290 -0
  242. equiformer_v3-0.0.0/src/equiformer_v3/core/modules/normalization/normalizer.py +293 -0
  243. equiformer_v3-0.0.0/src/equiformer_v3/core/modules/scaling/__init__.py +5 -0
  244. equiformer_v3-0.0.0/src/equiformer_v3/core/modules/scaling/compat.py +81 -0
  245. equiformer_v3-0.0.0/src/equiformer_v3/core/modules/scaling/fit.py +233 -0
  246. equiformer_v3-0.0.0/src/equiformer_v3/core/modules/scaling/scale_factor.py +168 -0
  247. equiformer_v3-0.0.0/src/equiformer_v3/core/modules/scaling/util.py +25 -0
  248. equiformer_v3-0.0.0/src/equiformer_v3/core/modules/scheduler.py +93 -0
  249. equiformer_v3-0.0.0/src/equiformer_v3/core/modules/transforms.py +62 -0
  250. equiformer_v3-0.0.0/src/equiformer_v3/core/preprocessing/__init__.py +12 -0
  251. equiformer_v3-0.0.0/src/equiformer_v3/core/preprocessing/atoms_to_graphs.py +333 -0
  252. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/__init__.py +6 -0
  253. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/convert_hydra_to_release.py +94 -0
  254. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/download_data.py +182 -0
  255. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/download_large_files.py +156 -0
  256. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/eqv2_to_hydra_eqv2.py +36 -0
  257. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/fit_normalizers.py +119 -0
  258. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/fit_references.py +91 -0
  259. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/gif_maker_parallelized.py +118 -0
  260. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/hpo/README.md +54 -0
  261. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/hpo/__init__.py +6 -0
  262. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/hpo/run_tune.py +111 -0
  263. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/hpo/run_tune_pbt.py +108 -0
  264. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/hpo/slurm/start-head.sh +9 -0
  265. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/hpo/slurm/start-worker.sh +8 -0
  266. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/hpo/slurm/submit-ray-cluster.sbatch +50 -0
  267. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/make_challenge_submission_file.py +117 -0
  268. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/make_lmdb_sizes.py +85 -0
  269. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/make_submission_file.py +145 -0
  270. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/preprocess_ef.py +170 -0
  271. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/preprocess_relaxed.py +144 -0
  272. equiformer_v3-0.0.0/src/equiformer_v3/core/scripts/uncompress.py +67 -0
  273. equiformer_v3-0.0.0/src/equiformer_v3/core/tasks/__init__.py +9 -0
  274. equiformer_v3-0.0.0/src/equiformer_v3/core/tasks/task.py +121 -0
  275. equiformer_v3-0.0.0/src/equiformer_v3/core/trainers/__init__.py +13 -0
  276. equiformer_v3-0.0.0/src/equiformer_v3/core/trainers/base_trainer.py +1037 -0
  277. equiformer_v3-0.0.0/src/equiformer_v3/core/trainers/ocp_trainer.py +734 -0
  278. equiformer_v3-0.0.0/src/equiformer_v3/data/__init__.py +0 -0
  279. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/.flake8 +5 -0
  280. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/LICENSE.md +21 -0
  281. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/README.md +191 -0
  282. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/README_legacy_OC20.md +127 -0
  283. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/__init__.py +16 -0
  284. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/codecov.yml +9 -0
  285. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/core/__init__.py +10 -0
  286. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/core/adsorbate.py +158 -0
  287. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/core/adsorbate_slab_config.py +553 -0
  288. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/core/bulk.py +128 -0
  289. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/core/interface_config.py +270 -0
  290. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/core/ion.py +69 -0
  291. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/core/multi_adsorbate_slab_config.py +235 -0
  292. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/core/slab.py +638 -0
  293. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/core/solvent.py +76 -0
  294. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/databases/__init__.py +0 -0
  295. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/databases/pkls/__init__.py +8 -0
  296. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/databases/pkls/adsorbates.pkl +0 -0
  297. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/databases/pkls/ions.pkl +0 -0
  298. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/databases/pkls/solvents.pkl +0 -0
  299. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/databases/update.py +105 -0
  300. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/experimental/README.md +36 -0
  301. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/experimental/get_energies.py +60 -0
  302. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/experimental/merge_traj.py +96 -0
  303. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/experimental/perturb_systems.py +58 -0
  304. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/experimental/rattle_test.py +42 -0
  305. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/experimental/utils.py +65 -0
  306. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/ocdata_workflow.png +0 -0
  307. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/scripts/precompute_sample_structures.py +177 -0
  308. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/structure_generator.py +442 -0
  309. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/utils/__init__.py +3 -0
  310. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/utils/flag_anomaly.py +141 -0
  311. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/utils/geometry.py +239 -0
  312. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/utils/vasp.py +93 -0
  313. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/utils/vasp_flags.py +94 -0
  314. equiformer_v3-0.0.0/src/equiformer_v3/data/oc/workflow_image.png +0 -0
  315. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/LICENSE +21 -0
  316. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/README.md +23 -0
  317. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/__init__.py +0 -0
  318. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_analysis.py +301 -0
  319. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_calcs/CO2_example/Eint.out +1 -0
  320. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_calcs/CO2_example/ads.cif +28 -0
  321. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_calcs/CO2_example/data.ads +46 -0
  322. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_calcs/CO2_example/data.frame +771 -0
  323. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_calcs/CO2_example/forces.dump +100 -0
  324. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_calcs/CO2_example/frame.cif +114 -0
  325. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_calcs/CO2_example/in.lammps +29 -0
  326. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_calcs/CO2_example/log.lammps +150 -0
  327. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_calcs/H2O_example/Eint.out +1 -0
  328. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_calcs/H2O_example/ads.cif +28 -0
  329. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_calcs/H2O_example/data.ads +46 -0
  330. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_calcs/H2O_example/data.frame +2790 -0
  331. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_calcs/H2O_example/forces.dump +347 -0
  332. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_calcs/H2O_example/frame.cif +361 -0
  333. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_calcs/H2O_example/in.lammps +29 -0
  334. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_calcs/H2O_example/log.lammps +150 -0
  335. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/FF_calcs/in.lammps +29 -0
  336. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/Fig5a.png +0 -0
  337. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/Fig5b.png +0 -0
  338. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/Fig5c.png +0 -0
  339. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/Fig5d.png +0 -0
  340. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/README.md +15 -0
  341. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/force_field/data_w_ml.json +18625 -0
  342. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/promising_mof/promising_mof_energies/energy.py +904 -0
  343. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/promising_mof/promising_mof_energies/missing_ddec.txt +284 -0
  344. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/promising_mof/promising_mof_features/BIMDIL.cif +98 -0
  345. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/promising_mof/promising_mof_features/DITYOW.cif +226 -0
  346. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/promising_mof/promising_mof_features/ODIXEG.cif +136 -0
  347. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/promising_mof/promising_mof_features/REDROI_0.08_0.cif +232 -0
  348. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/promising_mof/promising_mof_features/features.txt +210 -0
  349. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/promising_mof/promising_mof_features/list_MOF.txt +4 -0
  350. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/promising_mof/promising_mof_features/output.txt +6 -0
  351. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/promising_mof/promising_mof_features/readme +27 -0
  352. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/promising_mof/promising_mof_structures/defective.zip +0 -0
  353. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/promising_mof/promising_mof_structures/pristine.zip +0 -0
  354. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/promising_mof/promising_mof_structures/promising_defective_MOFs.csv +108 -0
  355. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/promising_mof/promising_mof_structures/promising_pristine_MOFs.csv +136 -0
  356. equiformer_v3-0.0.0/src/equiformer_v3/data/odac/setup_vasp.py +115 -0
  357. equiformer_v3-0.0.0/src/equiformer_v3/data/om/LICENSE.md +22 -0
  358. equiformer_v3-0.0.0/src/equiformer_v3/data/om/README.md +0 -0
  359. equiformer_v3-0.0.0/src/equiformer_v3/data/om/__init__.py +0 -0
  360. equiformer_v3-0.0.0/src/equiformer_v3/data/om/biomolecules/README.md +0 -0
  361. equiformer_v3-0.0.0/src/equiformer_v3/data/om/biomolecules/geom/sample_geom_drugs.py +96 -0
  362. equiformer_v3-0.0.0/src/equiformer_v3/data/om/biomolecules/geom/write_geom_drugs_structures.py +90 -0
  363. equiformer_v3-0.0.0/src/equiformer_v3/data/om/electrolytes/README.md +0 -0
  364. equiformer_v3-0.0.0/src/equiformer_v3/data/om/metal-organics/Architector_initial_examples.ipynb +1821 -0
  365. equiformer_v3-0.0.0/src/equiformer_v3/data/om/metal-organics/README.md +0 -0
  366. equiformer_v3-0.0.0/src/equiformer_v3/data/om/omdata/orca/__init__.py +0 -0
  367. equiformer_v3-0.0.0/src/equiformer_v3/data/om/omdata/orca/calc.py +63 -0
  368. equiformer_v3-0.0.0/src/equiformer_v3/data/om/omdata/orca/recipes.py +151 -0
  369. equiformer_v3-0.0.0/src/equiformer_v3/demo/ocpapi/.circleci/config.yml +44 -0
  370. equiformer_v3-0.0.0/src/equiformer_v3/demo/ocpapi/.isort.cfg +6 -0
  371. equiformer_v3-0.0.0/src/equiformer_v3/demo/ocpapi/LICENSE +21 -0
  372. equiformer_v3-0.0.0/src/equiformer_v3/demo/ocpapi/README.md +211 -0
  373. equiformer_v3-0.0.0/src/equiformer_v3/demo/ocpapi/__init__.py +20 -0
  374. equiformer_v3-0.0.0/src/equiformer_v3/demo/ocpapi/client/__init__.py +24 -0
  375. equiformer_v3-0.0.0/src/equiformer_v3/demo/ocpapi/client/client.py +449 -0
  376. equiformer_v3-0.0.0/src/equiformer_v3/demo/ocpapi/client/models.py +509 -0
  377. equiformer_v3-0.0.0/src/equiformer_v3/demo/ocpapi/client/ui.py +24 -0
  378. equiformer_v3-0.0.0/src/equiformer_v3/demo/ocpapi/version.py +3 -0
  379. equiformer_v3-0.0.0/src/equiformer_v3/demo/ocpapi/workflows/__init__.py +22 -0
  380. equiformer_v3-0.0.0/src/equiformer_v3/demo/ocpapi/workflows/adsorbates.py +910 -0
  381. equiformer_v3-0.0.0/src/equiformer_v3/demo/ocpapi/workflows/context.py +28 -0
  382. equiformer_v3-0.0.0/src/equiformer_v3/demo/ocpapi/workflows/filter.py +107 -0
  383. equiformer_v3-0.0.0/src/equiformer_v3/demo/ocpapi/workflows/log.py +5 -0
  384. equiformer_v3-0.0.0/src/equiformer_v3/demo/ocpapi/workflows/retry.py +131 -0
  385. equiformer_v3-0.0.0/src/equiformer_v3/experimental/configs/oc20/2M/equiformer_v3/experiments/base_N@8-L@6-C@128-attn-hidden@64-ffn@512-envelope-num-rbf@128_merge-layer-norm_gates2-gridmlp_use-gate-force-head_wd@1e-3-grad-clip@100_lin-ref-e@4.yml +186 -0
  386. equiformer_v3-0.0.0/src/equiformer_v3/experimental/configs/oc20/2M/reference_data/coeff_2M.npz +0 -0
  387. equiformer_v3-0.0.0/src/equiformer_v3/experimental/configs/oc20/2M/reference_data/oc20_ref.pkl +0 -0
  388. equiformer_v3-0.0.0/src/equiformer_v3/experimental/configs/omat24/mptrj/experiments/direct/equiformer_v3_N@7_L@4_attn-hidden@32_rbf@10_max-neighbors@300_attn-grid@14-8_ffn-grid@14_use-gate-force-head_merge-layer-norm_epochs@70-bs@512-wd@1e-3-beta2@0.95_dens-p@0.5-std@0.025-r@0.5-w@10-strict-max-r@0.75-no-stress.yml +229 -0
  389. equiformer_v3-0.0.0/src/equiformer_v3/experimental/configs/omat24/mptrj/experiments/gradient/equiformer_v3_grad-finetune_N@7_L@4_attn-hidden@32_rbf@10_max-neighbors@300_attn-grid@14-8_ffn-grid@14_pt-reg-dens-no-stress-strict-max-r@0.75-ft-no-reg_lr@0-5e-5-epochs@10-bs@64x8-wd@1e-3-beta2@0.95.yml +232 -0
  390. equiformer_v3-0.0.0/src/equiformer_v3/experimental/configs/omat24/mptrj/preprocessing/equiformer_v2_mptrj_element_references.pt +0 -0
  391. equiformer_v3-0.0.0/src/equiformer_v3/experimental/configs/omat24/mptrj/preprocessing/equiformer_v2_mptrj_energy_element_references.npz +0 -0
  392. equiformer_v3-0.0.0/src/equiformer_v3/experimental/configs/omat24/mptrj/preprocessing/equiformer_v2_mptrj_normalizer.pt +0 -0
  393. equiformer_v3-0.0.0/src/equiformer_v3/experimental/configs/omat24/omat24/experiments/direct/equiformer_v3_N@7_L@4_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@14-8_ffn-grid@14_use-gate-force-head_merge-layer-norm_epochs@4-bs@512-wd@1e-3-beta2@0.98-eps@1e-6_dens-p@0.5-std@0.025-r@0.5-0.75-w@1-no-stress-max-f@2.5_no-amp.yml +239 -0
  394. equiformer_v3-0.0.0/src/equiformer_v3/experimental/configs/omat24/omat24/experiments/direct/equiformer_v3_N@7_L@6_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@20-8_ffn-grid@20_use-gate-force-head_merge-layer-norm_epochs@4-bs@512-wd@1e-3-beta2@0.98-eps@1e-6_dens-p@0.5-std@0.025-r@0.5-0.75-w@1-no-stress-max-f@2.5_no-amp.yml +250 -0
  395. equiformer_v3-0.0.0/src/equiformer_v3/experimental/configs/omat24/omat24/experiments/gradient/equiformer_v3_grad-finetune_N@7_L@4_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@14-8_ffn-grid@14_merge-layer-norm_lr@0-1e-4-epochs@2-bs@512-wd@1e-3-beta2@0.98-eps@1e-6_pt-reg-dens-ft-no-reg.yml +241 -0
  396. equiformer_v3-0.0.0/src/equiformer_v3/experimental/configs/omat24/omat24/experiments/gradient/equiformer_v3_grad-finetune_N@7_L@6_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@20-8_ffn-grid@20_merge-layer-norm_lr@0-1e-4-epochs@2-bs@512-wd@1e-3-beta2@0.98-eps@1e-6_pt-reg-dens-ft-no-reg.yml +243 -0
  397. equiformer_v3-0.0.0/src/equiformer_v3/experimental/configs/omat24/omat24/preprocessing/omat24_energy_element_references.npz +0 -0
  398. equiformer_v3-0.0.0/src/equiformer_v3/experimental/configs/omat24/salex_mptrj/experiments/gradient/equiformer_v3_grad-finetune_N@7_L@4_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@14-8_ffn-grid@14_attn-eps@1e-8_lr@0-5e-5-warmup@0.1-epochs@2-mptrj-salex-ratio@8-bs@256-wd@1e-3-beta2@0.98-eps@1e-6_pt-reg-dens-ft-no-reg-lr@1e-4.yml +242 -0
  399. equiformer_v3-0.0.0/src/equiformer_v3/experimental/configs/omat24/salex_mptrj/preprocessing/salex_mptrj_energy_element_references.npz +0 -0
  400. equiformer_v3-0.0.0/src/equiformer_v3/experimental/datasets/create_expanded_structures_aselmdb.py +125 -0
  401. equiformer_v3-0.0.0/src/equiformer_v3/experimental/datasets/create_metadata_num_edges.py +72 -0
  402. equiformer_v3-0.0.0/src/equiformer_v3/experimental/datasets/matbench_discovery_create_aselmdb.py +25 -0
  403. equiformer_v3-0.0.0/src/equiformer_v3/experimental/datasets/mptrj_convert_json_to_aselmdb.py +153 -0
  404. equiformer_v3-0.0.0/src/equiformer_v3/experimental/datasets/mptrj_create_subset_aselmdb.py +42 -0
  405. equiformer_v3-0.0.0/src/equiformer_v3/experimental/docs/env_setup.md +30 -0
  406. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/__init__.py +0 -0
  407. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/equiformer_v3/Jd.pt +0 -0
  408. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/equiformer_v3/activation.py +517 -0
  409. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/equiformer_v3/drop.py +84 -0
  410. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/equiformer_v3/edge_rot_mat.py +90 -0
  411. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/equiformer_v3/envelope.py +34 -0
  412. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/equiformer_v3/equiformer_v3.py +763 -0
  413. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/equiformer_v3/equiformer_v3_dens.py +508 -0
  414. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/equiformer_v3/input_block.py +116 -0
  415. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/equiformer_v3/layer_norm.py +335 -0
  416. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/equiformer_v3/output_block.py +298 -0
  417. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/equiformer_v3/radial_function.py +97 -0
  418. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/equiformer_v3/so2_ops.py +156 -0
  419. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/equiformer_v3/so3.py +603 -0
  420. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/equiformer_v3/softmax.py +83 -0
  421. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/equiformer_v3/transformer_block.py +755 -0
  422. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/equiformer_v3/utils.py +11 -0
  423. equiformer_v3-0.0.0/src/equiformer_v3/experimental/models/equiformer_v3/wigner.py +38 -0
  424. equiformer_v3-0.0.0/src/equiformer_v3/experimental/scripts/eval/matbench_discovery/discovery.sh +15 -0
  425. equiformer_v3-0.0.0/src/equiformer_v3/experimental/scripts/eval/matbench_discovery/kappa.sh +4 -0
  426. equiformer_v3-0.0.0/src/equiformer_v3/experimental/scripts/eval/oc20/s2ef/equiformer_v3/equiformer_v3_splits@2M_g@8.sh +51 -0
  427. equiformer_v3-0.0.0/src/equiformer_v3/experimental/scripts/eval/omat24/equiformer_v3/equiformer_v3_g@8.sh +48 -0
  428. equiformer_v3-0.0.0/src/equiformer_v3/experimental/scripts/eval/omat24/equiformer_v3/equiformer_v3_omat24.sh +24 -0
  429. equiformer_v3-0.0.0/src/equiformer_v3/experimental/scripts/train/oc20/s2ef/equiformer_v3/equiformer_v3_splits@2M_g@8.sh +19 -0
  430. equiformer_v3-0.0.0/src/equiformer_v3/experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_grad_mptrj.sh +79 -0
  431. equiformer_v3-0.0.0/src/equiformer_v3/experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_grad_omat24.sh +79 -0
  432. equiformer_v3-0.0.0/src/equiformer_v3/experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_grad_omat24_g@4nodes_mithril.sh +101 -0
  433. equiformer_v3-0.0.0/src/equiformer_v3/experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_grad_salex-mptrj.sh +79 -0
  434. equiformer_v3-0.0.0/src/equiformer_v3/experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_grad_salex-mptrj_g@4nodes_mithril.sh +101 -0
  435. equiformer_v3-0.0.0/src/equiformer_v3/experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_mptrj.sh +79 -0
  436. equiformer_v3-0.0.0/src/equiformer_v3/experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_omat24.sh +79 -0
  437. equiformer_v3-0.0.0/src/equiformer_v3/experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_omat24_g@4nodes_mithril.sh +102 -0
  438. equiformer_v3-0.0.0/src/equiformer_v3/experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_omat24_g@multi_mithril.sh +99 -0
  439. equiformer_v3-0.0.0/src/equiformer_v3/experimental/tasks/matbench_discovery/evaluate_discovery.py +320 -0
  440. equiformer_v3-0.0.0/src/equiformer_v3/experimental/tasks/matbench_discovery/join_preds.py +116 -0
  441. equiformer_v3-0.0.0/src/equiformer_v3/experimental/tasks/matbench_discovery/kappa_run_single_relaxation.py +343 -0
  442. equiformer_v3-0.0.0/src/equiformer_v3/experimental/tasks/matbench_discovery/test_discovery.py +290 -0
  443. equiformer_v3-0.0.0/src/equiformer_v3/experimental/tasks/remove_key_from_checkpoint.py +41 -0
  444. equiformer_v3-0.0.0/src/equiformer_v3/experimental/tasks/remove_torch_compile_from_checkpoint.py +26 -0
  445. equiformer_v3-0.0.0/src/equiformer_v3/experimental/tasks/test_equivariance/test_s2_grid_mul.py +68 -0
  446. equiformer_v3-0.0.0/src/equiformer_v3/experimental/tasks/test_equivariance/test_transformer_blocks.py +140 -0
  447. equiformer_v3-0.0.0/src/equiformer_v3/experimental/tasks/test_fashp_many_body/const_wigner2gaunt.pt +0 -0
  448. equiformer_v3-0.0.0/src/equiformer_v3/experimental/tasks/test_fashp_many_body/equiformer_v3_body_order_test.py +906 -0
  449. equiformer_v3-0.0.0/src/equiformer_v3/experimental/tasks/test_fashp_many_body/gaunt_self_tensor_product.py +67 -0
  450. equiformer_v3-0.0.0/src/equiformer_v3/experimental/tasks/test_fashp_many_body/test_body_order_neighborhood.py +414 -0
  451. equiformer_v3-0.0.0/src/equiformer_v3/experimental/tasks/test_fashp_many_body/test_self_tensor_product.py +124 -0
  452. equiformer_v3-0.0.0/src/equiformer_v3/experimental/trainers/__init__.py +0 -0
  453. equiformer_v3-0.0.0/src/equiformer_v3/experimental/trainers/dens_ase_dataset.py +149 -0
  454. equiformer_v3-0.0.0/src/equiformer_v3/experimental/trainers/equiformer_v3_dens_trainer.py +1191 -0
  455. equiformer_v3-0.0.0/src/equiformer_v3/experimental/trainers/exponential_moving_average_v2.py +213 -0
  456. equiformer_v3-0.0.0/src/equiformer_v3/experimental/trainers/oc20_total_energy_lmdb.py +227 -0
@@ -0,0 +1,398 @@
1
+ Metadata-Version: 2.3
2
+ Name: equiformer_v3
3
+ Version: 0.0.0
4
+ Summary: Equiformer v3
5
+ Requires-Dist: ase>=3.22,<4.0
6
+ Requires-Dist: numpy>=1.26,<3.0
7
+ Requires-Dist: myplots>=0.1.1
8
+ Requires-Dist: fairchem-core
9
+ Requires-Dist: torch==2.4.1
10
+ Requires-Dist: scipy<1.12
11
+ Requires-Dist: torchvision
12
+ Requires-Dist: torchaudio
13
+ Requires-Dist: torch-geometric
14
+ Requires-Dist: torch-scatter
15
+ Requires-Dist: torch-sparse
16
+ Requires-Dist: torch-cluster
17
+ Requires-Dist: torch-spline-conv
18
+ Requires-Python: >=3.11
19
+ Description-Content-Type: text/markdown
20
+
21
+ # EquiformerV3: Scaling Efficient, Expressive, and General SE(3)-Equivariant Graph Attention Transformers
22
+
23
+
24
+ **[Paper](https://arxiv.org/abs/2604.09130)** | **[Checkpoint](https://huggingface.co/mirror-physics/equiformer_v3)**
25
+
26
+
27
+ This repository contains the official PyTorch implementation of the work "EquiformerV3: Scaling Efficient, Expressive, and General SE(3)-Equivariant Graph Attention Transformers".
28
+ We provide the code for training on the OC20 S2EF-2M, MPtrj, OMat24, and sAlex datasets and for evaluation on Matbench Discovery.
29
+
30
+ Additional training configs for more datasets will be added in the future.
31
+
32
+ This repository is based on [this version of `fairchem`](https://github.com/facebookresearch/fairchem/tree/977a80328f2be44649b414a9907a1d6ef2f81e95).
33
+ We include the original codebase for ease of reproducibility and place the code relevant to our work under [`experimental`](experimental).
34
+
35
+
36
+ <p align="center">
37
+ <img src="fig/equiformer_v3_architecture.png" alt="photo not available" width="65%" height="65%">
38
+ </p>
39
+
40
+
41
+ <p align="center">
42
+ <img src="fig/matbench_results.png" alt="photo not available" width="65%" height="65%">
43
+ </p>
44
+
45
+
46
+ ## Content ##
47
+ 0. [Environment Setup](#environment-setup)
48
+ 0. [File Structure](#file-structure)
49
+ 0. [Training](#training)
50
+ 0. [Checkpoint](#checkpoint)
51
+ 0. [Evaluation](#evaluation)
52
+ 0. [Acknowledgement](#acknowledgement)
53
+ 0. [Citation](#citation)
54
+
55
+
56
+ ## Environment Setup ##
57
+
58
+
59
+ ### Environment
60
+
61
+ See [here](experimental/docs/env_setup.md) for setting up the environment.
62
+
63
+
64
+ ### OC20
65
+
66
+ 1. The OC20 S2EF dataset can be downloaded by following instructions in their [GitHub repository](https://github.com/Open-Catalyst-Project/ocp/blob/5a7738f9aa80b1a9a7e0ca15e33938b4d2557edd/DATASET.md#download-and-preprocess-the-dataset).
67
+
68
+ 2. For example, we can download the OC20 S2EF-2M dataset by running:
69
+ ```bash
70
+ cd ocp
71
+ python scripts/download_data.py --task s2ef --split "2M" --num-workers 8
72
+ ```
73
+
74
+ 3. We note that we remove `--ref-energy` since we now train on total energy labels instead of adsorption energy labels.
75
+
76
+ <!--
77
+ 4. We recommend evaluating the trained [checkpoints](#checkpoint) on the `val_id` subset to make sure the energy conversion is correct before running any training.
78
+ -->
79
+
80
+
81
+ ### MPtrj
82
+
83
+ 1. Download the dataset (`MPtrj_2022.9_full.json`) [here](https://figshare.com/articles/dataset/Materials_Project_Trjectory_MPtrj_Dataset/23713842?file=41619375).
84
+
85
+ 2. Update [the path to the `.json` dataset](experimental/datasets/mptrj_convert_json_to_aselmdb.py#L17) and [the path to save the processed dataset](experimental/datasets/mptrj_convert_json_to_aselmdb.py#L18) in this [file](experimental/datasets/mptrj_convert_json_to_aselmdb.py).
86
+
87
+ 3. Run the following command to convert `.json` dataset into `.aselmdb` dataset:
88
+ ```bash
89
+ python experimental/datasets/mptrj_convert_json_to_aselmdb.py
90
+ ```
91
+
92
+ 4. We remove structures in which any atom has no neighbor within 6Å.
93
+
94
+ 5. We create `metadata.npz`, which records the number of edges for each structure for better load balancing:
95
+ ```bash
96
+ # Path to the directory containing .aselmdb files
97
+ ASELMDB_DATASET=""
98
+
99
+ python experimental/datasets/create_metadata_num_edges.py --input-dir $ASELMDB_DATASET
100
+
101
+ # Rename to `metadata.npz`
102
+ cd $ASELMDB_DATASET
103
+ cp metadata_num-edges.npz metadata.npz
104
+ ```
105
+
106
+
107
+ ### OMat24 and sAlex
108
+
109
+ 1. The datasets can be found [here](https://huggingface.co/datasets/facebook/OMAT24).
110
+
111
+ 2. Same as MPtrj above, we create `metadata.npz`, which records the number of edges for each structure for better load balancing:
112
+ ```bash
113
+ # Path to the directory containing .aselmdb files
114
+ ASELMDB_DATASET=""
115
+
116
+ python experimental/datasets/create_metadata_num_edges.py --input-dir $ASELMDB_DATASET
117
+
118
+ cd $ASELMDB_DATASET
119
+
120
+ # Deprecate the original `metadata.npz`
121
+ mv metadata.npz metadata_num-nodes.npz
122
+ # Instead, use the one recording the number of edges
123
+ cp metadata_num-edges.npz metadata.npz
124
+ ```
125
+
126
+ 3. For OMat24, we repeat 2. for all directories under `train` and `val`. That is, we need to do that for `aimd-from-PBE-1000-npt`, `aimd-from-PBE-1000-nvt`, `aimd-from-PBE-3000-npt`, `aimd-from-PBE-3000-nvt`, `rattled-1000`, `rattled-1000-subsampled`, `rattled-300`, `rattled-300-subsampled`, `rattled-500`, `rattled-500-subsampled`, `rattled-relax`.
127
+
128
+
129
+ ## File Structure ##
130
+
131
+ We place all the files relevant to our work under [`experimental`](experimental).
132
+
133
+ 1. [`configs`](experimental/configs) contains config files for training and evaluation.
134
+ 2. [`datasets`](experimental/datasets) contains utility functions to preprocess datasets.
135
+ 3. [`models`](experimental/models) contains EquiformerV3 (+ [DeNS](https://arxiv.org/abs/2403.09549)) models.
136
+ 4. [`scripts`](experimental/scripts) contains the scripts for training and evaluation.
137
+ 5. [`tasks`](experimental/tasks) contains the code of running simulations in Matbench Discovery, testing equivariance, and conducting body-order experiments.
138
+ 6. [`trainers`](experimental/trainers) contains the code for training and evaluation.
139
+
140
+
141
+ ## Training ##
142
+
143
+ ### OC20
144
+
145
+ 1. OC20 S2EF-2M dataset (Index 7 in Table 1).
146
+
147
+ a. Modify [the path to the training set](experimental/configs/oc20/2M/equiformer_v3/experiments/base_N%408-L%406-C%40128-attn-hidden%4064-ffn%40512-envelope-num-rbf%40128_merge-layer-norm_gates2-gridmlp_use-gate-force-head_wd%401e-3-grad-clip%40100_lin-ref-e%404.yml#L7) and [the path to the validation set](experimental/configs/oc20/2M/equiformer_v3/experiments/base_N%408-L%406-C%40128-attn-hidden%4064-ffn%40512-envelope-num-rbf%40128_merge-layer-norm_gates2-gridmlp_use-gate-force-head_wd%401e-3-grad-clip%40100_lin-ref-e%404.yml#L23) in the [config file](experimental/configs/oc20/2M/equiformer_v3/experiments/base_N%408-L%406-C%40128-attn-hidden%4064-ffn%40512-envelope-num-rbf%40128_merge-layer-norm_gates2-gridmlp_use-gate-force-head_wd%401e-3-grad-clip%40100_lin-ref-e%404.yml).
148
+
149
+ b. Update [the path to save results](experimental/scripts/train/oc20/s2ef/equiformer_v3/equiformer_v3_splits@2M_g@8.sh#L2) in the [training script](experimental/scripts/train/oc20/s2ef/equiformer_v3/equiformer_v3_splits@2M_g@8.sh).
150
+
151
+ c. Run:
152
+ ```bash
153
+ sh experimental/scripts/train/oc20/s2ef/equiformer_v3/equiformer_v3_splits@2M_g@8.sh
154
+ ```
155
+
156
+
157
+ ### MPtrj
158
+
159
+ We provide the config and script for training EquiformerV3 with $L_{max} = 4$ here.
160
+ The preprocessing of MPtrj data is [here](#mptrj).
161
+
162
+
163
+ 1. Direct pre-training
164
+
165
+ a. Modify the [path to the training set](experimental/configs/omat24/mptrj/experiments/direct/equiformer_v3_N@7_L@4_attn-hidden@32_rbf@10_max-neighbors@300_attn-grid@14-8_ffn-grid@14_use-gate-force-head_merge-layer-norm_epochs@70-bs@512-wd@1e-3-beta2@0.95_dens-p@0.5-std@0.025-r@0.5-w@10-strict-max-r@0.75-no-stress.yml#L7) (the full MPtrj dataset) and the [path to the validation set](experimental/configs/omat24/mptrj/experiments/direct/equiformer_v3_N@7_L@4_attn-hidden@32_rbf@10_max-neighbors@300_attn-grid@14-8_ffn-grid@14_use-gate-force-head_merge-layer-norm_epochs@70-bs@512-wd@1e-3-beta2@0.95_dens-p@0.5-std@0.025-r@0.5-w@10-strict-max-r@0.75-no-stress.yml#L74) (we used a subset of sAlex validation set as the final evaluation is on Matbench Discovery) in the [config file](experimental/configs/omat24/mptrj/experiments/direct/equiformer_v3_N@7_L@4_attn-hidden@32_rbf@10_max-neighbors@300_attn-grid@14-8_ffn-grid@14_use-gate-force-head_merge-layer-norm_epochs@70-bs@512-wd@1e-3-beta2@0.95_dens-p@0.5-std@0.025-r@0.5-w@10-strict-max-r@0.75-no-stress.yml).
166
+
167
+ b. Modify the [path to save results](experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_mptrj.sh#L16) in the [training script](experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_mptrj.sh).
168
+
169
+ c. The [training script](experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_mptrj.sh) requires two nodes with 8 GPUs on each node. We note that the training script provides an example of launching distributed training on 2 nodes and that training can be launched in different manners.
170
+
171
+ d. Run:
172
+ ```bash
173
+ bash experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_mptrj.sh
174
+ ```
175
+
176
+
177
+ 2. Remove energy head from pre-trained checkpoint
178
+
179
+ a. After direct pre-training, we remove the energy head from the checkpoints by running:
180
+ ```bash
181
+ # Path to the checkpoint of direct pre-training
182
+ CHECKPOINT=""
183
+
184
+ python experimental/tasks/remove_key_from_checkpoint.py --input-path $CHECKPOINT --remove-key energy_block
185
+ ```
186
+
187
+ b. This creates a new checkpoint (`.../checkpoint_no-energy_block.pt`), which is used to initialize model weights during gradient fine-tuning.
188
+
189
+
190
+ 3. Gradient fine-tuning
191
+
192
+ a. Modify the [path to the training set](experimental/configs/omat24/mptrj/experiments/gradient/equiformer_v3_grad-finetune_N@7_L@4_attn-hidden@32_rbf@10_max-neighbors@300_attn-grid@14-8_ffn-grid@14_pt-reg-dens-no-stress-strict-max-r@0.75-ft-no-reg_lr@0-5e-5-epochs@10-bs@64x8-wd@1e-3-beta2@0.95.yml#L7) (the full MPtrj dataset) and the [path to the validation set](experimental/configs/omat24/mptrj/experiments/gradient/equiformer_v3_grad-finetune_N@7_L@4_attn-hidden@32_rbf@10_max-neighbors@300_attn-grid@14-8_ffn-grid@14_pt-reg-dens-no-stress-strict-max-r@0.75-ft-no-reg_lr@0-5e-5-epochs@10-bs@64x8-wd@1e-3-beta2@0.95.yml#L75) (we used a subset of sAlex validation set as the final evaluation is on Matbench Discovery) in the [config file](experimental/configs/omat24/mptrj/experiments/gradient/equiformer_v3_grad-finetune_N@7_L@4_attn-hidden@32_rbf@10_max-neighbors@300_attn-grid@14-8_ffn-grid@14_pt-reg-dens-no-stress-strict-max-r@0.75-ft-no-reg_lr@0-5e-5-epochs@10-bs@64x8-wd@1e-3-beta2@0.95.yml).
193
+
194
+ b. Modify the [path to pre-trained checkpoint](experimental/configs/omat24/mptrj/experiments/gradient/equiformer_v3_grad-finetune_N@7_L@4_attn-hidden@32_rbf@10_max-neighbors@300_attn-grid@14-8_ffn-grid@14_pt-reg-dens-no-stress-strict-max-r@0.75-ft-no-reg_lr@0-5e-5-epochs@10-bs@64x8-wd@1e-3-beta2@0.95.yml#L233). The path should be something like `.../checkpoint_no-energy_block.pt` obtained by running 2. above.
195
+
196
+ c. Modify the [path to save results](experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_grad_mptrj.sh#L16) in the [training script](experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_grad_mptrj.sh).
197
+
198
+ d. The [training script](experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_grad_mptrj.sh) requires two nodes with 8 GPUs on each node. We note that the training script provides an example of launching distributed training on 2 nodes and that training can be launched in different manners.
199
+
200
+ e. Run:
201
+ ```bash
202
+ bash experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_grad_mptrj.sh
203
+ ```
204
+
205
+
206
+ ### OMat24 → MPtrj and sAlex
207
+
208
+ We provide the config and script for training EquiformerV3 with $L_{max} = 4$ and $L_{max} = 6$ here.
209
+ The preprocessing of MPtrj data is [here](#mptrj).
210
+
211
+
212
+ 1. Direct pre-training on OMat24
213
+
214
+ a. Modify the [path to the training set](experimental/configs/omat24/omat24/experiments/direct/equiformer_v3_N@7_L@4_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@14-8_ffn-grid@14_use-gate-force-head_merge-layer-norm_epochs@4-bs@512-wd@1e-3-beta2@0.98-eps@1e-6_dens-p@0.5-std@0.025-r@0.5-0.75-w@1-no-stress-max-f@2.5_no-amp.yml#L5-L15) and the [path to the validation set](experimental/configs/omat24/omat24/experiments/direct/equiformer_v3_N@7_L@4_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@14-8_ffn-grid@14_use-gate-force-head_merge-layer-norm_epochs@4-bs@512-wd@1e-3-beta2@0.98-eps@1e-6_dens-p@0.5-std@0.025-r@0.5-0.75-w@1-no-stress-max-f@2.5_no-amp.yml#L81) in the [config file](experimental/configs/omat24/omat24/experiments/direct/equiformer_v3_N@7_L@4_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@14-8_ffn-grid@14_use-gate-force-head_merge-layer-norm_epochs@4-bs@512-wd@1e-3-beta2@0.98-eps@1e-6_dens-p@0.5-std@0.025-r@0.5-0.75-w@1-no-stress-max-f@2.5_no-amp.yml).
215
+
216
+ b. Modify the [path to save results](experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_omat24.sh#L16) in the [training script](experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_omat24.sh).
217
+
218
+ c. The [training script](experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_omat24.sh) requires four nodes with 8 GPUs on each node. We note that the training script provides an example of launching distributed training on four nodes and that training can be launched in different manners.
219
+
220
+ d. Run:
221
+ ```bash
222
+ bash experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_omat24.sh
223
+ ```
224
+
225
+ e. Repeat the above steps for $L_{max} = 6$.
226
+
227
+
228
+ 2. Gradient fine-tuning on OMat24
229
+
230
+ a. Modify the [path to the training set](experimental/configs/omat24/omat24/experiments/gradient/equiformer_v3_grad-finetune_N@7_L@4_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@14-8_ffn-grid@14_merge-layer-norm_lr@0-1e-4-epochs@2-bs@512-wd@1e-3-beta2@0.98-eps@1e-6_pt-reg-dens-ft-no-reg.yml#L5-L15) and the [path to the validation set](experimental/configs/omat24/omat24/experiments/gradient/equiformer_v3_grad-finetune_N@7_L@4_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@14-8_ffn-grid@14_merge-layer-norm_lr@0-1e-4-epochs@2-bs@512-wd@1e-3-beta2@0.98-eps@1e-6_pt-reg-dens-ft-no-reg.yml#L81) in the [config file](experimental/configs/omat24/omat24/experiments/gradient/equiformer_v3_grad-finetune_N@7_L@4_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@14-8_ffn-grid@14_merge-layer-norm_lr@0-1e-4-epochs@2-bs@512-wd@1e-3-beta2@0.98-eps@1e-6_pt-reg-dens-ft-no-reg.yml).
231
+
232
+ b. Modify the [path to pre-trained checkpoint](experimental/configs/omat24/omat24/experiments/gradient/equiformer_v3_grad-finetune_N@7_L@4_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@14-8_ffn-grid@14_merge-layer-norm_lr@0-1e-4-epochs@2-bs@512-wd@1e-3-beta2@0.98-eps@1e-6_pt-reg-dens-ft-no-reg.yml#L241). The path should be something like `.../checkpoint.pt`.
233
+
234
+ c. Modify the [path to save results](experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_grad_omat24.sh#L16) in the [training script](experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_grad_omat24.sh).
235
+
236
+ d. The [training script](experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_grad_omat24.sh) requires four nodes with 8 GPUs on each node. We note that the training script provides an example of launching distributed training on four nodes and that training can be launched in different manners.
237
+
238
+ e. Run:
239
+ ```bash
240
+ bash experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_grad_omat24.sh
241
+ ```
242
+
243
+ f. Repeat the above steps for $L_{max} = 6$.
244
+
245
+
246
+ 3. Gradient fine-tuning on MPtrj and sAlex
247
+
248
+ a. Modify the [path to the training set](experimental/configs/omat24/salex_mptrj/experiments/gradient/equiformer_v3_grad-finetune_N@7_L@4_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@14-8_ffn-grid@14_attn-eps@1e-8_lr@0-5e-5-warmup@0.1-epochs@2-mptrj-salex-ratio@8-bs@256-wd@1e-3-beta2@0.98-eps@1e-6_pt-reg-dens-ft-no-reg-lr@1e-4.yml#L5-L13) and the [path to the validation set](experimental/configs/omat24/salex_mptrj/experiments/gradient/equiformer_v3_grad-finetune_N@7_L@4_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@14-8_ffn-grid@14_attn-eps@1e-8_lr@0-5e-5-warmup@0.1-epochs@2-mptrj-salex-ratio@8-bs@256-wd@1e-3-beta2@0.98-eps@1e-6_pt-reg-dens-ft-no-reg-lr@1e-4.yml#L81) in the [config file](experimental/configs/omat24/salex_mptrj/experiments/gradient/equiformer_v3_grad-finetune_N@7_L@4_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@14-8_ffn-grid@14_attn-eps@1e-8_lr@0-5e-5-warmup@0.1-epochs@2-mptrj-salex-ratio@8-bs@256-wd@1e-3-beta2@0.98-eps@1e-6_pt-reg-dens-ft-no-reg-lr@1e-4.yml).
249
+
250
+ b. Modify the [path to pre-trained checkpoint](experimental/configs/omat24/salex_mptrj/experiments/gradient/equiformer_v3_grad-finetune_N@7_L@4_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@14-8_ffn-grid@14_attn-eps@1e-8_lr@0-5e-5-warmup@0.1-epochs@2-mptrj-salex-ratio@8-bs@256-wd@1e-3-beta2@0.98-eps@1e-6_pt-reg-dens-ft-no-reg-lr@1e-4.yml#L242). The path should be something like `.../checkpoint.pt`.
251
+
252
+ c. Modify the [path to save results](experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_grad_salex-mptrj.sh#L16) in the [training script](experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_grad_salex-mptrj.sh).
253
+
254
+ d. The [training script](experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_grad_salex-mptrj.sh) requires four nodes with 8 GPUs on each node. We note that the training script provides an example of launching distributed training on four nodes and that training can be launched in different manners.
255
+
256
+ e. Run:
257
+ ```bash
258
+ bash experimental/scripts/train/omat24/equiformer_v3/equiformer_v3_grad_salex-mptrj.sh
259
+ ```
260
+
261
+ f. Repeat the above steps for $L_{max} = 6$.
262
+
263
+
264
+ ## Checkpoint ##
265
+
266
+ Trained checkpoints can be found in the [HuggingFace page](https://huggingface.co/mirror-physics/equiformer_v3).
267
+
268
+ <!--
269
+ ### OC20
270
+
271
+ |Split |Epochs |Download |val force MAE (meV / Å) |val energy MAE (meV) |
272
+ |--- |--- |--- |--- |--- |
273
+ | S2EF-2M (total energy) | 12 |[checkpoint]() \| [config](experimental/configs/oc20/2M/equiformer_v3/experiments/base_N%408-L%406-C%40128-attn-hidden%4064-ffn%40512-envelope-num-rbf%40128_merge-layer-norm_gates2-gridmlp_use-gate-force-head_wd%401e-3-grad-clip%40100_lin-ref-e%404.yml) | 18.15 | 201 |
274
+ -->
275
+
276
+ <!--
277
+ ### MPtrj
278
+
279
+
280
+ ### OMat24 → MPtrj and sAlex
281
+ -->
282
+
283
+
284
+ ## Evaluation ##
285
+
286
+ ### OC20
287
+
288
+ 1. OC20 S2EF-2M dataset (Index 7 in Table 1)
289
+
290
+ a. Follow the 1.a. [here](#oc20-1) to update the [config file](experimental/configs/oc20/2M/equiformer_v3/experiments/base_N%408-L%406-C%40128-attn-hidden%4064-ffn%40512-envelope-num-rbf%40128_merge-layer-norm_gates2-gridmlp_use-gate-force-head_wd%401e-3-grad-clip%40100_lin-ref-e%404.yml).
291
+
292
+ b. Download the OC20 checkpoint [here](#checkpoint).
293
+
294
+ c. Modify [the path to save results](experimental/scripts/eval/oc20/s2ef/equiformer_v3/equiformer_v3_splits@2M_g@8.sh#L2), [the path to the validation set](experimental/scripts/eval/oc20/s2ef/equiformer_v3/equiformer_v3_splits@2M_g@8.sh#L7), and [the path to checkpoint](experimental/scripts/eval/oc20/s2ef/equiformer_v3/equiformer_v3_splits@2M_g@8.sh#L6) in the [evaluation script](experimental/scripts/eval/oc20/s2ef/equiformer_v3/equiformer_v3_splits@2M_g@8.sh).
295
+
296
+ d. Run the script:
297
+ ```bash
298
+ sh experimental/scripts/eval/oc20/s2ef/equiformer_v3/equiformer_v3_splits@2M_g@8.sh
299
+ ```
300
+
301
+
302
+ ### OMat24
303
+
304
+ 1. Evaluate on OMat24 validation set
305
+
306
+ a. Follow [here](#omat24--mptrj-and-salex) to update the config files ([direct](experimental/configs/omat24/omat24/experiments/direct/equiformer_v3_N@7_L@4_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@14-8_ffn-grid@14_use-gate-force-head_merge-layer-norm_epochs@4-bs@512-wd@1e-3-beta2@0.98-eps@1e-6_dens-p@0.5-std@0.025-r@0.5-0.75-w@1-no-stress-max-f@2.5_no-amp.yml) and [gradient](experimental/configs/omat24/omat24/experiments/gradient/equiformer_v3_grad-finetune_N@7_L@4_attn-hidden@32_rbf@64_max-neighbors@300_attn-grid@14-8_ffn-grid@14_merge-layer-norm_lr@0-1e-4-epochs@2-bs@512-wd@1e-3-beta2@0.98-eps@1e-6_pt-reg-dens-ft-no-reg.yml)).
307
+
308
+ b. Download the OMat24 checkpoint [here](#checkpoint).
309
+
310
+ c. Modify [the path to save results](experimental/scripts/eval/omat24/equiformer_v3/equiformer_v3_g@8.sh#L2), [the path to config file](experimental/scripts/eval/omat24/equiformer_v3/equiformer_v3_g@8.sh#L3), and [the path to checkpoint](experimental/scripts/eval/omat24/equiformer_v3/equiformer_v3_g@8.sh#L6) in the [evaluation script](experimental/scripts/eval/omat24/equiformer_v3/equiformer_v3_g@8.sh).
311
+
312
+ d. Run the script:
313
+ ```bash
314
+ sh experimental/scripts/eval/omat24/equiformer_v3/equiformer_v3_g@8.sh
315
+ ```
316
+
317
+
318
+ ### Matbench Discovery
319
+
320
+ 1. Evaluate on discovery metrics
321
+
322
+ a. Modify [the path to save preprocessed data](experimental/datasets/matbench_discovery_create_aselmdb.py#L8) and then run the command:
323
+ ```bash
324
+ cd experimental/datasets
325
+ python matbench_discovery_create_aselmdb.py
326
+ ```
327
+
328
+ b. Modify [the path to checkpoint](experimental/scripts/eval/matbench_discovery/discovery.sh#L1), [the path to save results](experimental/scripts/eval/matbench_discovery/discovery.sh#L2), and [the path to the dataset](experimental/scripts/eval/matbench_discovery/discovery.sh#L3) in the [evaluation script](experimental/scripts/eval/matbench_discovery/discovery.sh).
329
+
330
+ c. Run the calculation script:
331
+ ```bash
332
+ sh experimental/scripts/eval/matbench_discovery/discovery.sh
333
+ ```
334
+
335
+ d. Postprocess the calculation:
336
+ ```bash
337
+ # Path to save results in b. and c.
338
+ INPUT_DIR=""
339
+
340
+ python experimental/tasks/matbench_discovery/join_preds.py --input-dir $INPUT_DIR
341
+ ```
342
+
343
+ e. Evaluate the calculations and print results like F1 score and RMSD:
344
+ ```bash
345
+ # Path to save results in b. and c.
346
+ INPUT_DIR=""
347
+
348
+ python experimental/tasks/matbench_discovery/evaluate_discovery.py --input-dir $INPUT_DIR
349
+ ```
350
+ This would take about 30 minutes to get the RMSD results.
351
+
352
+
353
+ 2. Evaluate on thermal conductivity task ($\kappa_{\text{SRME}}$)
354
+
355
+ a. Modify [the path to save results](experimental/scripts/eval/matbench_discovery/kappa.sh#L2), and [the path to checkpoint](experimental/scripts/eval/matbench_discovery/kappa.sh#L1) in the [evaluation script](experimental/scripts/eval/matbench_discovery/kappa.sh).
356
+
357
+ b. Run the script:
358
+ ```bash
359
+ sh experimental/scripts/eval/matbench_discovery/kappa.sh
360
+ ```
361
+
362
+ c. The results will be printed out after running the above command. If there is `2.0`, it is possibly because a certain structure hits out-of-memory error on GPUs. We can run the command on CPU for those structures.
363
+
364
+
365
+
366
+ ## Acknowledgement ##
367
+
368
+ Our implementation is based on [PyTorch](https://pytorch.org/), [PyG](https://pytorch-geometric.readthedocs.io/en/latest/index.html), [e3nn](https://github.com/e3nn/e3nn), [timm](https://github.com/huggingface/pytorch-image-models), [fairchem](https://github.com/facebookresearch/fairchem/tree/977a80328f2be44649b414a9907a1d6ef2f81e95), [Equiformer](https://github.com/atomicarchitects/equiformer), [EquiformerV2](https://github.com/atomicarchitects/equiformer_v2), [DeNS](https://github.com/atomicarchitects/DeNS), [Matbench Discovery](https://github.com/janosh/matbench-discovery), and [Nequix](https://github.com/atomicarchitects/nequix).
369
+
370
+
371
+
372
+ ## Citation ##
373
+
374
+ Please consider citing the works below if this repository is helpful:
375
+
376
+ - [EquiformerV3](https://arxiv.org/abs/2604.09130):
377
+ ```bibtex
378
+ @article{
379
+ equiformer_v3,
380
+ title={EquiformerV3: Scaling Efficient, Expressive, and General SE(3)-Equivariant Graph Attention Transformers},
381
+ author={Yi-Lun Liao and Alexander J. Hoffman and Sabrina C. Shen and Alexandre Duval and Sam Walton Norwood and Tess Smidt},
382
+ journal={arXiv preprint arXiv:2604.09130},
383
+ year={2026}
384
+ }
385
+ ```
386
+
387
+ - [DeNS](https://arxiv.org/abs/2403.09549):
388
+ ```bibtex
389
+ @article{
390
+ DeNS,
391
+ title={Generalizing Denoising to Non-Equilibrium Structures Improves Equivariant Force Fields},
392
+ author={Yi-Lun Liao and Tess Smidt and Muhammed Shuaibi* and Abhishek Das*},
393
+ journal={arXiv preprint arXiv:2403.09549},
394
+ year={2024}
395
+ }
396
+ ```
397
+
398
+ Please direct questions to Yi-Lun Liao (ylliao@mit.edu).