reaxkit 3.0.3__tar.gz → 3.2.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 (604) hide show
  1. reaxkit-3.2.0/PKG-INFO +248 -0
  2. reaxkit-3.2.0/README.md +184 -0
  3. reaxkit-3.2.0/pyproject.toml +108 -0
  4. reaxkit-3.2.0/setup.cfg +7 -0
  5. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/__init__.py +2 -0
  6. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/event_diagnostics.py +4 -3
  7. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/events.py +5 -3
  8. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/structural.py +1 -0
  9. reaxkit-3.2.0/src/reaxkit/analysis/composed/RDF_analyzer.py +164 -0
  10. reaxkit-3.2.0/src/reaxkit/analysis/composed/__init__.py +2 -0
  11. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/connectivity/connectivity.py +95 -52
  12. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/connectivity/coordination.py +12 -21
  13. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/connectivity/hybridization.py +12 -21
  14. reaxkit-3.2.0/src/reaxkit/analysis/connectivity/stream_state.py +168 -0
  15. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/control/control.py +1 -0
  16. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/data/analysis_task_dataclass_map.yaml +136 -6
  17. reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/__init__.py +59 -0
  18. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/electrostatics/charges.py +30 -4
  19. reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/dielectric_constant.py +328 -0
  20. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/electrostatics/electrostatics.py +368 -56
  21. reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/potential_and_electric_field/__init__.py +26 -0
  22. reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/potential_and_electric_field/analysis.py +344 -0
  23. reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/potential_and_electric_field/calculation.py +330 -0
  24. reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/potential_and_electric_field/parameters.py +51 -0
  25. reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/potential_and_electric_field/physics.py +61 -0
  26. reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/potential_and_electric_field/spatial.py +156 -0
  27. reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/potential_and_electric_field/trajectory.py +209 -0
  28. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/__init__.py +92 -0
  29. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/basal_plane_displacement_for_dipole_moment/__init__.py +39 -0
  30. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/basal_plane_displacement_for_dipole_moment/dipole.py +343 -0
  31. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/basal_plane_displacement_for_dipole_moment/local_polarization.py +420 -0
  32. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/basal_plane_displacement_for_dipole_moment/polarization.py +230 -0
  33. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/basal_plane_displacement_for_dipole_moment/projected_polarity.py +558 -0
  34. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/binned_dynamic_charge.py +671 -0
  35. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/charge_extxyz.py +373 -0
  36. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/charge_field.py +366 -0
  37. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/dynamic_charge.py +683 -0
  38. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/four_folded_wurtzite/__init__.py +41 -0
  39. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/four_folded_wurtzite/neighbors.py +654 -0
  40. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/four_folded_wurtzite/plotting.py +184 -0
  41. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/four_folded_wurtzite/polarity.py +470 -0
  42. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/four_folded_wurtzite/trajectory.py +270 -0
  43. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/hbn_reference/AlN_hbn.cif +34 -0
  44. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/hbn_reference/__init__.py +57 -0
  45. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/hbn_reference/al_neighborhoods.py +121 -0
  46. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/hbn_reference/domain_wall_velocity.py +401 -0
  47. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/hbn_reference/local_polarization.py +698 -0
  48. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/hbn_reference/polarization.py +1082 -0
  49. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/hbn_reference/projected_polarity.py +626 -0
  50. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/hbn_reference/threshold_growth.py +233 -0
  51. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/neighbor_stream.py +38 -0
  52. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/polarity_stream.py +97 -0
  53. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/polarization_stream.py +141 -0
  54. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/poled_counts.py +85 -0
  55. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/switching_kinetics/__init__.py +19 -0
  56. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/switching_kinetics/fitting.py +278 -0
  57. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/switching_kinetics/kai.py +63 -0
  58. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/switching_kinetics/nls.py +64 -0
  59. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/switching_kinetics/snng.py +64 -0
  60. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/three_folded_wurtzite/__init__.py +47 -0
  61. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/three_folded_wurtzite/neighbors.py +321 -0
  62. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/three_folded_wurtzite/polarity.py +386 -0
  63. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/three_folded_wurtzite/polarization.py +277 -0
  64. reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/three_folded_wurtzite/trajectory.py +249 -0
  65. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/force_field/MM_summary.py +1 -0
  66. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/force_field/diagnostic_beeswarm.py +1 -0
  67. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/force_field/diagnostics.py +1 -0
  68. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/force_field/force_field.py +1 -0
  69. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/force_field/optimization_progress.py +1 -0
  70. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/force_field/report.py +4 -0
  71. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/force_field/trainset.py +2 -0
  72. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/kinematics/kinematics.py +1 -0
  73. reaxkit-3.2.0/src/reaxkit/analysis/molecular_analysis/frame_stream.py +72 -0
  74. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/molecular_analysis/isomer_detection.py +1 -0
  75. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/molecular_analysis/isomer_representative_detection.py +1 -0
  76. reaxkit-3.2.0/src/reaxkit/analysis/molecular_analysis/lifetime_stream.py +75 -0
  77. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/molecular_analysis/molecular_analysis.py +42 -0
  78. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/params/params.py +1 -0
  79. reaxkit-3.2.0/src/reaxkit/analysis/stress_strain/streaming.py +73 -0
  80. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/stress_strain/z_binned_deformation_gradient_strain.py +16 -6
  81. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/stress_strain/z_binned_strain_using_top_bottom_atoms.py +18 -8
  82. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/timeseries/geometry_optimization.py +1 -0
  83. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/timeseries/timeseries.py +205 -123
  84. reaxkit-3.2.0/src/reaxkit/analysis/trajectory/blocked_msd.py +110 -0
  85. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/diffusivity.py +114 -49
  86. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/dihedral.py +12 -21
  87. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/frame_count.py +9 -0
  88. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/msd.py +15 -1
  89. reaxkit-3.2.0/src/reaxkit/analysis/trajectory/msd_task.py +83 -0
  90. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/rdf.py +66 -52
  91. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/relabel.py +39 -0
  92. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/voronoi.py +42 -10
  93. reaxkit-3.2.0/src/reaxkit/cli/__init__.py +5 -0
  94. reaxkit-3.2.0/src/reaxkit/cli/help_flag_registry.py +518 -0
  95. reaxkit-3.2.0/src/reaxkit/cli/help_metadata.py +80 -0
  96. reaxkit-3.2.0/src/reaxkit/cli/inventory.py +56 -0
  97. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/cli/main.py +206 -73
  98. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/cli/path.py +51 -0
  99. reaxkit-3.2.0/src/reaxkit/cli_startup.py +35 -0
  100. reaxkit-3.2.0/src/reaxkit/core/analysis_executor.py +7 -0
  101. reaxkit-3.2.0/src/reaxkit/core/command_registry.py +33 -0
  102. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/platform/log.py +4 -0
  103. reaxkit-3.2.0/src/reaxkit/core/registry/analysis_cli_routing_registry.py +528 -0
  104. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/registry/command_catalog.py +12 -1
  105. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/registry/generator_cli_routing_registry.py +2 -1
  106. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/registry/workflow_cli_routing_registry.py +1 -0
  107. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/resolve/command_alias_resolver.py +1 -1
  108. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/results_shaping/result_time_enrichment.py +33 -10
  109. reaxkit-3.2.0/src/reaxkit/core/runtime/__init__.py +78 -0
  110. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/runtime/analysis_executor.py +369 -59
  111. reaxkit-3.2.0/src/reaxkit/core/runtime/analysis_task_manifest.py +174 -0
  112. reaxkit-3.2.0/src/reaxkit/core/runtime/artifacts.py +426 -0
  113. reaxkit-3.2.0/src/reaxkit/core/runtime/benchmark.py +256 -0
  114. reaxkit-3.2.0/src/reaxkit/core/runtime/checkpoint_bonds.py +63 -0
  115. reaxkit-3.2.0/src/reaxkit/core/runtime/checkpoint_policy.py +72 -0
  116. reaxkit-3.2.0/src/reaxkit/core/runtime/checkpoint_results.py +208 -0
  117. reaxkit-3.2.0/src/reaxkit/core/runtime/checkpoint_trajectory.py +132 -0
  118. reaxkit-3.2.0/src/reaxkit/core/runtime/cli_policy.py +68 -0
  119. reaxkit-3.2.0/src/reaxkit/core/runtime/command_diagnostics.py +266 -0
  120. reaxkit-3.2.0/src/reaxkit/core/runtime/command_inventory.py +163 -0
  121. reaxkit-3.2.0/src/reaxkit/core/runtime/command_profile.py +61 -0
  122. reaxkit-3.2.0/src/reaxkit/core/runtime/execution_contracts.py +366 -0
  123. reaxkit-3.2.0/src/reaxkit/core/runtime/frame_pipeline.py +370 -0
  124. reaxkit-3.2.0/src/reaxkit/core/runtime/frame_tables.py +88 -0
  125. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/runtime/generator_runtime.py +21 -2
  126. reaxkit-3.2.0/src/reaxkit/core/runtime/packed_results.py +152 -0
  127. reaxkit-3.2.0/src/reaxkit/core/runtime/priority_task_manifest.py +48 -0
  128. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/runtime/progress.py +104 -42
  129. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/runtime/provenance.py +13 -3
  130. reaxkit-3.2.0/src/reaxkit/core/runtime/reducers.py +158 -0
  131. reaxkit-3.2.0/src/reaxkit/core/runtime/reference_frames.py +50 -0
  132. reaxkit-3.2.0/src/reaxkit/core/runtime/result_store.py +448 -0
  133. reaxkit-3.2.0/src/reaxkit/core/runtime/result_stream.py +86 -0
  134. reaxkit-3.2.0/src/reaxkit/core/runtime/stack_summary.py +88 -0
  135. reaxkit-3.2.0/src/reaxkit/core/runtime/trajectory_spool.py +93 -0
  136. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/storage/cache_manager.py +22 -3
  137. reaxkit-3.2.0/src/reaxkit/core/storage/frame_store.py +1226 -0
  138. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/storage/storage_layout.py +108 -59
  139. reaxkit-3.2.0/src/reaxkit/core/task_registry.py +14 -0
  140. reaxkit-3.2.0/src/reaxkit/core/task_resolution_using_alias.py +21 -0
  141. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/domain/data_models.py +9 -0
  142. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/ams/adapter.py +507 -17
  143. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/ams/rkf_handler.py +2 -0
  144. reaxkit-3.2.0/src/reaxkit/engine/ams/trajectory_frame.py +74 -0
  145. reaxkit-3.2.0/src/reaxkit/engine/common/generators/extended_xyz_generator.py +205 -0
  146. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/generators/ffield_generator.py +2 -0
  147. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/generators/structure_transformers.py +19 -2
  148. reaxkit-3.2.0/src/reaxkit/engine/common/generators/trajectory_frame.py +60 -0
  149. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/generators/xyz_generator.py +2 -0
  150. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/io/ffield_handler.py +2 -0
  151. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/lammps/dump_handler.py +2 -0
  152. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/lammps/lammps_log_handler.py +2 -0
  153. reaxkit-3.2.0/src/reaxkit/engine/lammps/trajectory_frame.py +109 -0
  154. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter.py +62 -49
  155. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/loaders_dynamics.py +19 -6
  156. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/loaders_properties.py +70 -9
  157. reaxkit-3.2.0/src/reaxkit/engine/reaxff/adapter_parts/molecular_stream.py +49 -0
  158. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/normalizers.py +2 -1
  159. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/streaming.py +168 -47
  160. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/addmol_generator.py +2 -0
  161. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/charges_generator.py +2 -0
  162. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/control_generator.py +2 -0
  163. reaxkit-3.2.0/src/reaxkit/engine/reaxff/generators/elastic_tensor.py +69 -0
  164. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/eregime_generator.py +2 -0
  165. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/fort7_repair.py +2 -0
  166. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/geo_generator.py +89 -12
  167. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/kopple2_generator.py +2 -0
  168. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/trainset_elastic_energy.py +39 -5
  169. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/trainset_elastic_geometry.py +27 -9
  170. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/trainset_heatfo.py +6 -3
  171. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/trainset_mp.py +35 -43
  172. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/trainset_source_adapter.py +2 -0
  173. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/trainset_yaml.py +53 -13
  174. reaxkit-3.2.0/src/reaxkit/engine/reaxff/generators/trajectory_frame.py +117 -0
  175. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/tregime_generator.py +2 -0
  176. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/vregime_generator.py +2 -0
  177. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/xmolout_generator.py +2 -0
  178. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/base.py +41 -13
  179. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/control_handler.py +2 -0
  180. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/eregime_handler.py +2 -0
  181. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort13_handler.py +2 -0
  182. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort57_handler.py +2 -0
  183. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort73_handler.py +2 -0
  184. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort74_handler.py +2 -0
  185. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort76_handler.py +2 -0
  186. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort78_handler.py +2 -0
  187. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort79_handler.py +2 -0
  188. reaxkit-3.2.0/src/reaxkit/engine/reaxff/io/fort7_handler.py +1392 -0
  189. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort83_handler.py +2 -0
  190. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort99_handler.py +2 -0
  191. reaxkit-3.2.0/src/reaxkit/engine/reaxff/io/frame_header_validation.py +42 -0
  192. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/geo_handler.py +2 -0
  193. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/geo_restraint_handler.py +2 -0
  194. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/molfra_handler.py +2 -0
  195. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/params_handler.py +2 -0
  196. reaxkit-3.2.0/src/reaxkit/engine/reaxff/io/stream_metrics.py +165 -0
  197. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/summary_handler.py +4 -0
  198. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/trainset_handler.py +2 -0
  199. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/vels_handler.py +2 -0
  200. reaxkit-3.2.0/src/reaxkit/engine/reaxff/io/xmolout_handler.py +1035 -0
  201. reaxkit-3.2.0/src/reaxkit/engine/reaxff/quick_io/__init__.py +21 -0
  202. reaxkit-3.2.0/src/reaxkit/engine/reaxff/quick_io/charges.py +186 -0
  203. reaxkit-3.2.0/src/reaxkit/engine/reaxff/quick_io/xmolout_identity.py +81 -0
  204. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/help/data/help_information_sources.yaml +13 -3
  205. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/help/help_index_loader.py +153 -91
  206. reaxkit-3.2.0/src/reaxkit/io/__init__.py +6 -0
  207. reaxkit-3.2.0/src/reaxkit/io/base_handler.py +5 -0
  208. reaxkit-3.2.0/src/reaxkit/io/handlers/__init__.py +5 -0
  209. reaxkit-3.2.0/src/reaxkit/io/handlers/xmolout_handler.py +5 -0
  210. reaxkit-3.2.0/src/reaxkit/presentation/color_styles.py +78 -0
  211. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/dispatcher.py +25 -6
  212. reaxkit-3.2.0/src/reaxkit/presentation/kymograph.py +32 -0
  213. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/persist.py +90 -17
  214. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/registry.py +17 -4
  215. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/base.py +6 -1
  216. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/boxplot.py +2 -18
  217. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/errorbar.py +7 -18
  218. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/grouped_bar.py +3 -1
  219. reaxkit-3.2.0/src/reaxkit/presentation/plot/renderers/kymograph.py +28 -0
  220. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/multi_subplots.py +6 -1
  221. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/single.py +17 -22
  222. reaxkit-3.2.0/src/reaxkit/presentation/plot_styles.py +207 -0
  223. reaxkit-3.2.0/src/reaxkit/presentation/powerpoint.py +345 -0
  224. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/specs.py +14 -0
  225. reaxkit-3.2.0/src/reaxkit/presentation/workflow_artifacts.py +154 -0
  226. reaxkit-3.2.0/src/reaxkit/utils/alias.py +37 -0
  227. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/equation_of_states.py +2 -0
  228. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/numerical/autocorrelation.py +2 -0
  229. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/numerical/extrema_finder.py +2 -0
  230. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/numerical/fft.py +2 -0
  231. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/numerical/moving_average.py +2 -0
  232. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/numerical/numerical_calcs.py +2 -0
  233. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/numerical/signal_ops.py +2 -0
  234. reaxkit-3.2.0/src/reaxkit/webui/assets/performance.js +35 -0
  235. reaxkit-3.2.0/src/reaxkit/webui/assets/plot_queries.js +75 -0
  236. reaxkit-3.2.0/src/reaxkit/webui/assets/workspace-icons.css +8 -0
  237. reaxkit-3.2.0/src/reaxkit/webui/assets/workspace.css +236 -0
  238. reaxkit-3.2.0/src/reaxkit/webui/assets/workspace.js +248 -0
  239. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/adapters/executor_adapter.py +13 -2
  240. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/adapters/result_normalizer.py +15 -4
  241. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/api.py +50 -5
  242. reaxkit-3.2.0/src/reaxkit/webui/backend/artifact_tables.py +324 -0
  243. reaxkit-3.2.0/src/reaxkit/webui/backend/byte_cache.py +65 -0
  244. reaxkit-3.2.0/src/reaxkit/webui/backend/jobs.py +475 -0
  245. reaxkit-3.2.0/src/reaxkit/webui/backend/metrics.py +27 -0
  246. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/node_runtime.py +28 -20
  247. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/pipeline_store.py +63 -4
  248. reaxkit-3.2.0/src/reaxkit/webui/backend/plot_queries.py +289 -0
  249. reaxkit-3.2.0/src/reaxkit/webui/backend/row_filters.py +92 -0
  250. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/schemas.py +1 -0
  251. reaxkit-3.2.0/src/reaxkit/webui/backend/serializer.py +122 -0
  252. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/tabular_payload.py +4 -1
  253. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/dash_app.py +16 -3
  254. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/presentation/perf_config.py +6 -0
  255. reaxkit-3.2.0/src/reaxkit/webui/presentation/plot_summary.py +123 -0
  256. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/presentation/registry.py +20 -0
  257. reaxkit-3.2.0/src/reaxkit/webui/presentation/ui_performance.json +12 -0
  258. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/callback_helpers.py +23 -101
  259. reaxkit-3.2.0/src/reaxkit/webui/ui/analysis/callback_sections/canvas_callbacks.py +309 -0
  260. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/callback_sections/execution_callbacks.py +16 -98
  261. reaxkit-3.2.0/src/reaxkit/webui/ui/analysis/callback_sections/job_callbacks.py +99 -0
  262. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/callback_sections/pipeline_callbacks.py +39 -27
  263. reaxkit-3.2.0/src/reaxkit/webui/ui/analysis/callback_sections/plot_callbacks.py +129 -0
  264. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/callback_sections/properties_callbacks.py +17 -6
  265. reaxkit-3.2.0/src/reaxkit/webui/ui/analysis/callback_sections/table_callbacks.py +84 -0
  266. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/callback_sections/visualization_callbacks.py +3 -3
  267. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/callbacks.py +6 -0
  268. reaxkit-3.2.0/src/reaxkit/webui/ui/analysis/components.py +78 -0
  269. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/tasks/autogen.py +87 -171
  270. reaxkit-3.2.0/src/reaxkit/webui/ui/analysis/tasks/validation.py +90 -0
  271. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/layout.py +23 -6
  272. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/logs/callbacks.py +12 -3
  273. reaxkit-3.2.0/src/reaxkit/webui/ui/shared/forms.py +51 -0
  274. reaxkit-3.2.0/src/reaxkit/webui/ui/shared/styles.py +3 -0
  275. reaxkit-3.2.0/src/reaxkit/webui/ui/shared/workspace.py +46 -0
  276. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/shell/callbacks.py +11 -11
  277. reaxkit-3.2.0/src/reaxkit/webui/ui/shell/components.py +40 -0
  278. reaxkit-3.2.0/src/reaxkit/webui/ui/shell/workspace_callbacks.py +103 -0
  279. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/active_site_workflow.py +48 -44
  280. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/connectivity_workflow.py +11 -2
  281. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/data/workflow_dataclass_map.yaml +721 -18
  282. reaxkit-3.2.0/src/reaxkit/workflows/electrostatics/__init__.py +13 -0
  283. reaxkit-3.2.0/src/reaxkit/workflows/electrostatics/dielectric_constant_workflow.py +345 -0
  284. {reaxkit-3.0.3/src/reaxkit/workflows → reaxkit-3.2.0/src/reaxkit/workflows/electrostatics}/electrostatics_workflow.py +87 -21
  285. reaxkit-3.2.0/src/reaxkit/workflows/electrostatics/potential_and_electric_field/__init__.py +15 -0
  286. reaxkit-3.2.0/src/reaxkit/workflows/electrostatics/potential_and_electric_field/artifacts.py +158 -0
  287. reaxkit-3.2.0/src/reaxkit/workflows/electrostatics/potential_and_electric_field/common.py +195 -0
  288. reaxkit-3.2.0/src/reaxkit/workflows/electrostatics/potential_and_electric_field/potential_and_electric_field_workflow.py +140 -0
  289. reaxkit-3.2.0/src/reaxkit/workflows/electrostatics/potential_and_electric_field/trajectory_workflow.py +86 -0
  290. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/__init__.py +9 -0
  291. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/basal_plane_displacement_for_dipole_moment/__init__.py +34 -0
  292. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/basal_plane_displacement_for_dipole_moment/dipole_workflow.py +107 -0
  293. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/basal_plane_displacement_for_dipole_moment/local_polarization_workflow.py +403 -0
  294. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/basal_plane_displacement_for_dipole_moment/polarization_workflow.py +162 -0
  295. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/basal_plane_displacement_for_dipole_moment/projected_polarity_workflow.py +333 -0
  296. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/binned_dynamic_charge_workflow.py +161 -0
  297. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/charge_extxyz_workflow.py +150 -0
  298. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/charge_field_workflow.py +317 -0
  299. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/dynamic_charge_workflow.py +440 -0
  300. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/four_folded_wurtzite/__init__.py +29 -0
  301. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/four_folded_wurtzite/artifacts.py +231 -0
  302. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/four_folded_wurtzite/common.py +218 -0
  303. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/four_folded_wurtzite/neighbors_workflow.py +93 -0
  304. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/four_folded_wurtzite/polarity_trajectory_workflow.py +187 -0
  305. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/four_folded_wurtzite/polarity_workflow.py +180 -0
  306. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/hbn_reference/__init__.py +17 -0
  307. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/hbn_reference/domain_wall_velocity_workflow.py +85 -0
  308. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/hbn_reference/fraction_growth_workflow.py +336 -0
  309. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/hbn_reference/local_polarization_workflow.py +510 -0
  310. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/hbn_reference/polarization_workflow.py +263 -0
  311. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/hbn_reference/projected_polarity_workflow.py +394 -0
  312. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/switching_kinetics/__init__.py +10 -0
  313. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/switching_kinetics/common.py +680 -0
  314. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/switching_kinetics/comparison_workflow.py +75 -0
  315. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/switching_kinetics/kai_workflow.py +71 -0
  316. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/switching_kinetics/nls_workflow.py +71 -0
  317. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/switching_kinetics/plotting.py +233 -0
  318. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/switching_kinetics/snng_workflow.py +71 -0
  319. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/three_folded_wurtzite/__init__.py +37 -0
  320. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/three_folded_wurtzite/artifacts.py +130 -0
  321. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/three_folded_wurtzite/common.py +139 -0
  322. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/three_folded_wurtzite/neighbors_workflow.py +96 -0
  323. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/three_folded_wurtzite/polarity_trajectory_workflow.py +151 -0
  324. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/three_folded_wurtzite/polarity_workflow.py +190 -0
  325. reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/three_folded_wurtzite/polarization_workflow.py +233 -0
  326. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/addmol_workflow.py +2 -2
  327. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/charges_workflow.py +2 -2
  328. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/control_workflow.py +9 -2
  329. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/eregime_workflow.py +1 -1
  330. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/ffield_workflow.py +133 -173
  331. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/fort7_workflow.py +2 -2
  332. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/geo_workflow.py +79 -39
  333. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/isomer_trainset_workflow.py +13 -13
  334. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/isomer_workflow.py +7 -7
  335. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/jaguar_isomer_workflow.py +9 -9
  336. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/trainset_export.py +5 -2
  337. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/trainset_workflow.py +75 -75
  338. reaxkit-3.2.0/src/reaxkit/workflows/force_field_opt/data/template_ffield_opt_figure_generator.xlsx +0 -0
  339. reaxkit-3.2.0/src/reaxkit/workflows/force_field_opt/data/template_ffield_opt_figure_generator_legacy.xlsx +0 -0
  340. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/get_ffield_opt_plots.py +134 -127
  341. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/get_ffield_opt_report.py +13 -13
  342. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/get_force_field_opt_geo_files.py +22 -8
  343. reaxkit-3.2.0/src/reaxkit/workflows/force_field_opt/plot_from_excel.py +205 -0
  344. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/kinematics_workflow.py +21 -3
  345. reaxkit-3.2.0/src/reaxkit/workflows/meta/gui_workflow.py +38 -0
  346. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/meta/manage_workspace_workflow.py +22 -0
  347. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/molecular_analysis_workflow.py +8 -2
  348. reaxkit-3.2.0/src/reaxkit/workflows/per_file/__init__.py +2 -0
  349. reaxkit-3.2.0/src/reaxkit/workflows/per_file/fort7_workflow.py +289 -0
  350. reaxkit-3.2.0/src/reaxkit/workflows/result_bundle.py +8 -0
  351. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/stress_strain/z_binned_strain_workflow.py +6 -6
  352. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/study_design/runtime.py +35 -39
  353. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/timeseries/common.py +177 -30
  354. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_a.py +34 -0
  355. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_alpha.py +34 -0
  356. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_b.py +34 -0
  357. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_beta.py +34 -0
  358. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_c.py +34 -0
  359. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/timeseries/get_cell_dimensions.py +13 -1
  360. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/timeseries/get_charge.py +10 -4
  361. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_density.py +34 -0
  362. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_displacement.py +40 -0
  363. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_elapsed_time.py +34 -0
  364. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_electric_field.py +46 -0
  365. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_eregime.py +29 -0
  366. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/timeseries/get_frames_count.py +16 -11
  367. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_gamma.py +34 -0
  368. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_geometry_optimization.py +39 -0
  369. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/timeseries/get_molecular_frequency.py +10 -2
  370. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_molecular_totals.py +32 -0
  371. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_num_of_atoms.py +34 -0
  372. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_partial_energy.py +54 -0
  373. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_potential_energy.py +62 -0
  374. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_pressure.py +34 -0
  375. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_restraint.py +41 -0
  376. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_temperature.py +34 -0
  377. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_total_atoms.py +34 -0
  378. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_total_molecular_mass.py +34 -0
  379. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_total_molecules.py +34 -0
  380. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_trajectory.py +39 -0
  381. reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_volume.py +34 -0
  382. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/timeseries/timeseries_workflow.py +48 -31
  383. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/trajectory_workflow.py +120 -21
  384. reaxkit-3.2.0/src/reaxkit.egg-info/PKG-INFO +248 -0
  385. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit.egg-info/SOURCES.txt +177 -2
  386. reaxkit-3.2.0/src/reaxkit.egg-info/entry_points.txt +2 -0
  387. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit.egg-info/requires.txt +11 -4
  388. reaxkit-3.0.3/AUTHORS.md +0 -26
  389. reaxkit-3.0.3/PKG-INFO +0 -155
  390. reaxkit-3.0.3/README.md +0 -101
  391. reaxkit-3.0.3/pyproject.toml +0 -93
  392. reaxkit-3.0.3/setup.cfg +0 -4
  393. reaxkit-3.0.3/src/reaxkit/analysis/electrostatics/__init__.py +0 -33
  394. reaxkit-3.0.3/src/reaxkit/cli/__init__.py +0 -3
  395. reaxkit-3.0.3/src/reaxkit/core/registry/analysis_cli_routing_registry.py +0 -266
  396. reaxkit-3.0.3/src/reaxkit/core/runtime/__init__.py +0 -10
  397. reaxkit-3.0.3/src/reaxkit/engine/reaxff/io/fort7_handler.py +0 -663
  398. reaxkit-3.0.3/src/reaxkit/engine/reaxff/io/xmolout_handler.py +0 -490
  399. reaxkit-3.0.3/src/reaxkit/webui/backend/serializer.py +0 -76
  400. reaxkit-3.0.3/src/reaxkit/webui/ui/analysis/callback_sections/canvas_callbacks.py +0 -495
  401. reaxkit-3.0.3/src/reaxkit/webui/ui/analysis/components.py +0 -59
  402. reaxkit-3.0.3/src/reaxkit/webui/ui/shared/styles.py +0 -227
  403. reaxkit-3.0.3/src/reaxkit/webui/ui/shell/components.py +0 -49
  404. reaxkit-3.0.3/src/reaxkit/workflows/force_field_opt/data/template_ffield_opt_figure_generator.xlsx +0 -0
  405. reaxkit-3.0.3/src/reaxkit/workflows/meta/gui_workflow.py +0 -46
  406. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_a.py +0 -18
  407. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_alpha.py +0 -18
  408. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_b.py +0 -18
  409. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_beta.py +0 -18
  410. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_c.py +0 -18
  411. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_density.py +0 -18
  412. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_displacement.py +0 -31
  413. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_elapsed_time.py +0 -18
  414. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_electric_field.py +0 -40
  415. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_eregime.py +0 -20
  416. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_gamma.py +0 -18
  417. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_geometry_optimization.py +0 -27
  418. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_molecular_totals.py +0 -21
  419. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_num_of_atoms.py +0 -18
  420. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_partial_energy.py +0 -25
  421. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_potential_energy.py +0 -23
  422. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_pressure.py +0 -18
  423. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_restraint.py +0 -34
  424. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_temperature.py +0 -18
  425. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_total_atoms.py +0 -18
  426. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_total_molecular_mass.py +0 -18
  427. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_total_molecules.py +0 -18
  428. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_trajectory.py +0 -30
  429. reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_volume.py +0 -18
  430. reaxkit-3.0.3/src/reaxkit.egg-info/PKG-INFO +0 -155
  431. reaxkit-3.0.3/src/reaxkit.egg-info/entry_points.txt +0 -2
  432. {reaxkit-3.0.3 → reaxkit-3.2.0}/LICENSE +0 -0
  433. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/README_FORMAT.yaml +0 -0
  434. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/__init__.py +0 -0
  435. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/__init__.py +0 -0
  436. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/classification.py +0 -0
  437. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/defects.py +0 -0
  438. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/models.py +0 -0
  439. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/pbc.py +0 -0
  440. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/tract_compat.py +0 -0
  441. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/base.py +0 -0
  442. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/connectivity/__init__.py +0 -0
  443. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/control/__init__.py +0 -0
  444. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/data/__init__.py +0 -0
  445. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/force_field/__init__.py +0 -0
  446. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/kinematics/__init__.py +0 -0
  447. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/molecular_analysis/__init__.py +0 -0
  448. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/molecular_analysis/isomer_trainset.py +0 -0
  449. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/molecular_analysis/jaguar_isomer_jobs.py +0 -0
  450. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/params/__init__.py +0 -0
  451. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/stress_strain/__init__.py +0 -0
  452. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/stress_strain/common.py +0 -0
  453. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/timeseries/__init__.py +0 -0
  454. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/__init__.py +0 -0
  455. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/pbc.py +0 -0
  456. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/validation.py +0 -0
  457. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/__init__.py +0 -0
  458. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/platform/__init__.py +0 -0
  459. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/platform/constants.py +0 -0
  460. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/platform/engine_resolver.py +0 -0
  461. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/platform/exceptions.py +0 -0
  462. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/platform/human_log.py +0 -0
  463. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/platform/paths.py +0 -0
  464. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/registry/__init__.py +0 -0
  465. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/registry/analysis_task_registry.py +0 -0
  466. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/resolve/__init__.py +0 -0
  467. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/resolve/alias.py +0 -0
  468. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/resolve/user_command_aliases.py +0 -0
  469. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/results_shaping/__init__.py +0 -0
  470. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/results_shaping/result_bundle.py +0 -0
  471. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/storage/__init__.py +0 -0
  472. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/storage/parsed_store.py +0 -0
  473. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/__init__.py +0 -0
  474. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/aggregate_engine.py +0 -0
  475. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/analyze_engine.py +0 -0
  476. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/init.py +0 -0
  477. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/io.py +0 -0
  478. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/logging.py +0 -0
  479. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/manage_engine.py +0 -0
  480. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/naming.py +0 -0
  481. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/present_engine.py +0 -0
  482. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/run_engine.py +0 -0
  483. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/schema.py +0 -0
  484. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/utils/__init__.py +0 -0
  485. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/utils/frame_utils.py +0 -0
  486. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/count_loc.py +0 -0
  487. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/data/constants.yaml +0 -0
  488. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/data/units.yaml +0 -0
  489. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/data/variable_aliases.yaml +0 -0
  490. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/domain/base_request.py +0 -0
  491. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/domain/base_result.py +0 -0
  492. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/__init__.py +0 -0
  493. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/ams/__init__.py +0 -0
  494. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/ams/data/ams_io_dataclass_map.yaml +0 -0
  495. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/base.py +0 -0
  496. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/__init__.py +0 -0
  497. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/data/__init__.py +0 -0
  498. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/data/common_generator_capabilities.yaml +0 -0
  499. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/generators/__init__.py +0 -0
  500. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/io/__init__.py +0 -0
  501. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/io/geo_io.py +0 -0
  502. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/lammps/__init__.py +0 -0
  503. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/lammps/adapter.py +0 -0
  504. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/lammps/data/lammps_io_dataclass_map.yaml +0 -0
  505. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/__init__.py +0 -0
  506. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/__init__.py +0 -0
  507. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/io_paths.py +0 -0
  508. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/loaders_forcefield.py +0 -0
  509. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/timing.py +0 -0
  510. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/writers.py +0 -0
  511. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/data/__init__.py +0 -0
  512. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/data/reaxff_generator_capabilities.yaml +0 -0
  513. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/data/reaxff_input_files_contents.yaml +0 -0
  514. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/data/reaxff_io_dataclass_map.yaml +0 -0
  515. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/data/reaxff_output_files_contents.yaml +0 -0
  516. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/__init__.py +0 -0
  517. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/__init__.py +0 -0
  518. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/help/__init__.py +0 -0
  519. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/help/data/__init__.py +0 -0
  520. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/help/data/help_intents.yaml +0 -0
  521. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/help/introspection_utils.py +0 -0
  522. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/__init__.py +0 -0
  523. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/active_sites/__init__.py +0 -0
  524. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/active_sites/plot_exports.py +0 -0
  525. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/active_sites/reporting.py +0 -0
  526. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/convert.py +0 -0
  527. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/export_utils.py +0 -0
  528. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/movie/__init__.py +0 -0
  529. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/movie/make_video.py +0 -0
  530. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/__init__.py +0 -0
  531. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/__init__.py +0 -0
  532. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/beeswarm.py +0 -0
  533. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/diagnostic_evolution.py +0 -0
  534. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/directed.py +0 -0
  535. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/dual_yaxis.py +0 -0
  536. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/heatmap2d.py +0 -0
  537. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/scatter3d.py +0 -0
  538. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/tornado.py +0 -0
  539. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/wireframe3d.py +0 -0
  540. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/wireframe3d_subplots.py +0 -0
  541. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/report_registry.py +0 -0
  542. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/reporting.py +0 -0
  543. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/stress_strain/__init__.py +0 -0
  544. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/stress_strain/z_binned_strain_plots.py +0 -0
  545. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/units.py +0 -0
  546. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/__init__.py +0 -0
  547. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/data/utils_functions_contents.yaml +0 -0
  548. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/numerical/__init__.py +0 -0
  549. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/__init__.py +0 -0
  550. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/app.py +0 -0
  551. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/__init__.py +0 -0
  552. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/adapters/__init__.py +0 -0
  553. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/adapters/engine_probe.py +0 -0
  554. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/utility_registry.py +0 -0
  555. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/callbacks.py +0 -0
  556. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/presentation/__init__.py +0 -0
  557. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/presentation/renderers/__init__.py +0 -0
  558. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/presentation/renderers/histogram.py +0 -0
  559. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/presentation/renderers/scatter3d.py +0 -0
  560. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/presentation/renderers/single.py +0 -0
  561. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/runtime_paths.py +0 -0
  562. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/__init__.py +0 -0
  563. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/__init__.py +0 -0
  564. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/callback_sections/__init__.py +0 -0
  565. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/tasks/__init__.py +0 -0
  566. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/tasks/form_utils.py +0 -0
  567. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/tasks/ui_hints.py +0 -0
  568. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/logs/__init__.py +0 -0
  569. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/logs/components.py +0 -0
  570. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/shared/__init__.py +0 -0
  571. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/shared/debounce.py +0 -0
  572. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/shell/__init__.py +0 -0
  573. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/__init__.py +0 -0
  574. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/data/workflow_command_metadata.py +0 -0
  575. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/__init__.py +0 -0
  576. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/fort83_workflow.py +0 -0
  577. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/kopple2_workflow.py +0 -0
  578. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/params_workflow.py +0 -0
  579. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/tregime_workflow.py +0 -0
  580. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/vregime_workflow.py +0 -0
  581. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/xmolout_workflow.py +0 -0
  582. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/__init__.py +0 -0
  583. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/cell_parameters.py +0 -0
  584. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/charge.py +0 -0
  585. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/energy_categories.py +0 -0
  586. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/geometry_targets.py +0 -0
  587. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/heatfo.py +0 -0
  588. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/report_linkage.py +0 -0
  589. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/meta/__init__.py +0 -0
  590. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/meta/command_alias_workflow.py +0 -0
  591. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/meta/help_workflow.py +0 -0
  592. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/meta/introspection_workflow.py +0 -0
  593. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/meta/study_workflow.py +0 -0
  594. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/presentation/__init__.py +0 -0
  595. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/presentation/gen_plot_workflow.py +0 -0
  596. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/presentation/gen_video_workflow.py +0 -0
  597. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/presentation/plot_atom_property_workflow.py +0 -0
  598. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/stress_strain/__init__.py +0 -0
  599. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/study_design/__init__.py +0 -0
  600. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/study_design/cli_help.py +0 -0
  601. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/study_design/study_workflow.py +0 -0
  602. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/timeseries/__init__.py +0 -0
  603. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit.egg-info/dependency_links.txt +0 -0
  604. {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit.egg-info/top_level.txt +0 -0
reaxkit-3.2.0/PKG-INFO ADDED
@@ -0,0 +1,248 @@
1
+ Metadata-Version: 2.4
2
+ Name: reaxkit
3
+ Version: 3.2.0
4
+ Summary: A toolkit for parsing, analyzing, and visualizing ReaxFF simulation data.
5
+ Home-page: https://ali-m-dinani.github.io/reaxkit/
6
+ Author-email: Ali Mohammadi Dinani <alimohammadi2265@gmail.com>, Adri van Duin <acv13@psu.edu>, Yun Kyung Shin <yks2@psu.edu>, Alireza Sepehrinezhad <alireza.sepehri@psu.edu>, Seyed Mahmoud Mortazavi <mahmoud.mortazavi72@gmail.com>, Anirban Phukan <akp6421@psu.edu>, Jupjeet Dhingra <jvd6198@psu.edu>, Swarit Dwivedi <Swarit.Dwivedi@monash.edu>, Asma Ul Hosna <abh6073@psu.edu>, Mozhdeh Mirakhory <mjm8816@psu.edu>
7
+ License-Expression: MIT
8
+ Project-URL: Homepage, https://ali-m-dinani.github.io/reaxkit/
9
+ Project-URL: Documentation, https://ali-m-dinani.github.io/reaxkit/
10
+ Project-URL: Repository, https://github.com/ali-m-dinani/reaxkit
11
+ Project-URL: Issues, https://github.com/ali-m-dinani/reaxkit/issues
12
+ Requires-Python: >=3.9
13
+ Description-Content-Type: text/markdown
14
+ License-File: LICENSE
15
+ Requires-Dist: numpy
16
+ Requires-Dist: pandas
17
+ Requires-Dist: scipy
18
+ Requires-Dist: matplotlib>=3.6
19
+ Requires-Dist: tqdm
20
+ Requires-Dist: rich
21
+ Requires-Dist: tabulate
22
+ Requires-Dist: PyYAML
23
+ Requires-Dist: rapidfuzz
24
+ Requires-Dist: openpyxl>=3.1
25
+ Requires-Dist: pyarrow
26
+ Requires-Dist: threadpoolctl>=3.1
27
+ Requires-Dist: psutil>=5.9
28
+ Provides-Extra: profiling
29
+ Requires-Dist: yappi<2,>=1.6; extra == "profiling"
30
+ Provides-Extra: plot
31
+ Requires-Dist: seaborn; extra == "plot"
32
+ Requires-Dist: plotly; extra == "plot"
33
+ Requires-Dist: imageio[ffmpeg]; extra == "plot"
34
+ Provides-Extra: webui
35
+ Requires-Dist: dash<5,>=3.1; extra == "webui"
36
+ Requires-Dist: dash_bootstrap_templates; extra == "webui"
37
+ Requires-Dist: fastapi; extra == "webui"
38
+ Requires-Dist: duckdb<2,>=1.1; extra == "webui"
39
+ Provides-Extra: trajectory
40
+ Requires-Dist: MDAnalysis; extra == "trajectory"
41
+ Requires-Dist: freud-analysis; extra == "trajectory"
42
+ Requires-Dist: ovito; extra == "trajectory"
43
+ Provides-Extra: materials
44
+ Requires-Dist: ase; extra == "materials"
45
+ Requires-Dist: mp_api; extra == "materials"
46
+ Requires-Dist: pymatgen; extra == "materials"
47
+ Provides-Extra: graph
48
+ Requires-Dist: networkx; extra == "graph"
49
+ Requires-Dist: igraph; extra == "graph"
50
+ Provides-Extra: ml
51
+ Requires-Dist: dscribe; extra == "ml"
52
+ Requires-Dist: spacy; extra == "ml"
53
+ Requires-Dist: scikit-learn; extra == "ml"
54
+ Provides-Extra: io
55
+ Requires-Dist: h5py; extra == "io"
56
+ Requires-Dist: python-docx; extra == "io"
57
+ Requires-Dist: zstandard; extra == "io"
58
+ Provides-Extra: engines
59
+ Requires-Dist: lammps; extra == "engines"
60
+ Requires-Dist: plams; extra == "engines"
61
+ Provides-Extra: all
62
+ Requires-Dist: reaxkit[engines,graph,io,materials,ml,plot,profiling,trajectory,webui]; extra == "all"
63
+ Dynamic: license-file
64
+
65
+ # ReaxKit
66
+
67
+ **ReaxKit** is a modular, extensible Python toolkit for **pre‑processing, post‑processing, and analysis of ReaxFF** molecular dynamics simulations.
68
+ It provides a clean separation between file parsing, analysis routines, and reproducible workflows, with **Python APIs**, a **CLI interface**, and a **Dash-based GUI**.
69
+
70
+ ReaxKit is designed for researchers who want a transparent, scriptable bridge between raw ReaxFF data and quantitative, publication‑ready results.
71
+
72
+ ---
73
+
74
+ ## Key Capabilities
75
+
76
+ ### Engine
77
+ - Shared engine abstractions for consistent parsing and generating input/output files across 3 different ReaxFF simulation engines, namely `ams`, `lammps`, `reaxff`
78
+ - Example IO and generator modules under the `reaxff` engine:
79
+ - ReaxFF input and output files such as `xmolout`, `fort.7`, `fort.13`, `molfra`, and more
80
+ - Input generators for `control`, `geo`, `eregime`, `tregime`, and related files
81
+
82
+ ### Analysis
83
+ - `get-potential-energy --relative --num-atoms N --export energy.csv` exports `potential_energy`, `relative_potential_energy`, `potential_energy_per_atom`, and `relative_potential_energy_per_atom` alongside the existing axes and plotting columns. Relative values use source frame 0 by default (or `--reference-frame`), before sampling. `--per-atom` can instead use each frame's atom count; relative per-atom energy is the difference between the normalized frame and normalized reference energies.
84
+ - Successful checkpointed CLI/workflow analyses consolidate their full recovery data into one verified `*.results.zip` file in the analysis cache, then remove their recovery checkpoint files after all requested outputs are saved. Repeating the same scientific options reuses this cache directly, without extracting batches or rerunning calculations. Interrupted analyses and failed output/cache writes keep their checkpoints for `--resume`. Explicit `--resume` takes precedence over cache reuse. With analysis caching disabled, checkpoints remain available; direct Python executor calls outside a workflow also retain them. Existing checkpoint folders are not swept automatically; successfully resuming one with caching enabled applies the same consolidation and cleanup.
85
+ - `get-hbn-reference-local-polarization` skips the large local, cell, and layer CSV tables by default; add `--export-local-csv` to request them. Summary/mapping output and requested plots or `--write-extxyz` remain available. This only changes exports, not calculations or checkpoint data, and does not delete older CSVs. Per-atom displacement exports remain separately controlled by `--write-displacements` and the output profile.
86
+ - AMS analyses can combine KF/RKF coordinates and charges with an external `fort.78` field schedule: use `--engine ams --input reaxout.kf --fort78 /path/to/fort.78`. Without an override, the adapter looks beside the KF/RKF file. The existing ReaxFF field reader preserves field components and MD iteration numbers; field-dependent analyses require matching iterations, not matching row numbers. Streaming parses the field schedule once. This supports charged-trajectory field export, local potential/field analyses, and charge-versus-field analysis. Missing fields are not replaced with zero.
87
+ - Engine-agnostic analyzers built on ReaxKit's domain data models
88
+ - Analyzer tasks organized around separated request, result, and task objects
89
+ - Analysis components separated from engine IO so the same computations can be reused across scripts, workflows, web UI, and presentation modules
90
+
91
+ ### Workflows
92
+ - Reproducible workflows organized by data handling, file tools, meta orchestration, presentation, and study design
93
+ - Automation paths for common ReaxFF pre-processing, analysis, post-processing, and presentation tasks
94
+
95
+ ### Web UI
96
+ - Dash-based interface components for interactive ReaxFF data inspection
97
+ - Backend, UI, and presentation layers for browser-driven workflows
98
+
99
+ ### Presentation
100
+ - Publication-ready plotting utilities:
101
+ - 2D plots, dual-axis plots, tornado plots, 3D scatter, and heatmaps
102
+ - Video generators
103
+
104
+ ### Utilities
105
+ - Shared data, media, and numerical utilities
106
+ - Common infrastructure used by analysis, workflows, web UI, and presentation modules
107
+
108
+ See the full documentation (API reference, tutorials, examples) on [ReaxKit Site](https://ali-m-dinani.github.io/reaxkit/).
109
+
110
+ ---
111
+
112
+ ## Project Layout
113
+
114
+ ```
115
+ src/reaxkit/
116
+ ├── analysis/ # Engine-agnostic analysis tasks
117
+ ├── cli/ # Command-line entry points
118
+ ├── core/ # Registries and shared core infrastructure
119
+ ├── data/ # Packaged reference data and resources
120
+ ├── domain/ # Central data models, requests, and results
121
+ ├── engine/ # IO handlers and input generators
122
+ ├── help/ # Introspection and help system
123
+ ├── presentation/ # Plotting, active-site views, and media presentation
124
+ ├── utils/ # Shared data, media, and numerical utilities
125
+ ├── webui/ # Dash/web interface backend, UI, and presentation layers
126
+ └── workflows/ # Workflow orchestration and automation
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Testing
132
+
133
+ Run unit tests with:
134
+
135
+ ```bash
136
+ pytest -s tests/
137
+ ```
138
+
139
+ to test the package and get the timing for their execution.
140
+
141
+ ---
142
+
143
+ ## Command diagnostics
144
+
145
+ Diagnostics are disabled by default for every CLI command. Pass `--diagnostics`
146
+ after the command name to write a unique report folder under
147
+ `reaxkit_workspace/logs/diagnostics/<command>_<UTC timestamp>_<unique suffix>/`
148
+ (or beneath your `--project-root`). Its location is printed at command startup.
149
+ Help and argument-parsing errors do not create reports. Recording starts after
150
+ CLI imports and argument parsing, before command execution.
151
+
152
+ - `report.json`: command arguments, interpreter/module paths, host, Slurm allocation,
153
+ timestamps, exit status, and the execution-step report.
154
+ - `console.log`: Python stdout/stderr, including progress, also displayed normally.
155
+ - `stacks.log`: Python stacks for all threads every 60 seconds, annotated with
156
+ UTC timestamps and elapsed seconds. Sample headers contain collection times;
157
+ observer annotations follow within roughly 0.25 seconds. The sampler's own
158
+ stack is excluded, and each stack is limited to 100 frames.
159
+ - `stacks.raw.log`: original cooperative Python stack samples, retained
160
+ independently of the observer.
161
+ - `stack_summary.txt` and `stack_summary.json`: live per-function tables grouped
162
+ by thread, with self/inclusive sample counts and estimated seconds (count times
163
+ sampling interval). Self means the top Python frame; inclusive means anywhere
164
+ in that thread's stack, counting recursive occurrences once per sample.
165
+ These are observations, not function-call counts or exact profiler timings.
166
+ Waiting time is included; inclusive and cross-thread times overlap and must
167
+ not be summed as command elapsed time. Short work between samples is missed.
168
+ - `resources.jsonl`: approximately five-second samples of process CPU time,
169
+ resident memory, and thread count. CPU values are cumulative seconds, not percentages;
170
+ measurements cover the command process, not its subprocesses.
171
+ - `steps.log`: finalized human-readable execution report; `exception.log` records
172
+ Python exceptions when present. `observer.log` contains observer errors, if any.
173
+
174
+ Use `--diagnostics --diagnostic-interval-seconds 30` to enable diagnostics with a
175
+ different stack interval. Place these flags after the command
176
+ name. A Python thread collects referenced frames through `sys._current_frames()`.
177
+ Native code holding the GIL delays stack sampling; missed samples are not
178
+ backfilled, and estimated times can undercount that work. A separate lightweight
179
+ observer continues resource monitoring even while analysis holds the GIL.
180
+ Stack traces are written to files, not repeated on the console.
181
+
182
+ Periodic diagnostics no longer use `faulthandler.dump_traceback_later`: its native
183
+ watchdog can race with thread/frame teardown and crash the interpreter itself.
184
+ ReaxKit does not install or cancel process-wide faulthandler timers or change
185
+ fatal-signal handlers. `PYTHONFAULTHANDLER=1` can still record fatal errors in the
186
+ scheduler log. Remove legacy watchdog wrappers such as `formal_diagnostic.sh`
187
+ when using these built-in diagnostics.
188
+
189
+ On forced termination (including Slurm time limits), finalization may not run.
190
+ Existing console, stack, and resource samples remain; a `running` report with no
191
+ finish time means **unfinished reporting**, not proof the job is still active.
192
+ Native/subprocess writes that bypass Python streams stay in the scheduler logs.
193
+ Reports contain supplied command arguments; inspect them before sharing.
194
+
195
+ ### Deterministic profiling (optional)
196
+
197
+ Install from your clone with `python -m pip install -e '.[profiling]'`, using the
198
+ same interpreter as the ReaxKit executable. Add `--diagnostics --profile` after the command name to
199
+ record actual function-call events and measured durations with Yappi, across the
200
+ main thread and Python worker threads. This is opt-in because instrumentation
201
+ adds overhead. `--profile-clock wall` (default) includes waiting; use
202
+ `--profile-clock cpu` for thread CPU time instead. Only one clock is recorded per run.
203
+
204
+ The same per-command **diagnostics** folder contains `profile_summary.txt`
205
+ (all functions sorted by cumulative time, with calls, primitive/nonrecursive
206
+ calls, self seconds, cumulative seconds, and thread timings), `profile.json`
207
+ (machine-readable equivalent), and `profile.pstat` (call graph for pstats-compatible
208
+ viewers). These files are separate from the estimated `stack_summary.*` tables.
209
+ Self time excludes callees; cumulative time includes them. Inclusive/thread wall
210
+ times overlap and must not be added as job elapsed time. Timings are measured,
211
+ not sampling estimates, but are not overhead-free or infinitely precise.
212
+
213
+ Profiling begins just before command execution and is finalized on normal exit
214
+ or a handled Python error. Startup imports/argument parsing, subprocesses, and
215
+ internal C/Fortran/BLAS stacks are not profiled; visible native call boundaries
216
+ are included. Forced termination can prevent profile files being saved; the
217
+ periodic stack diagnostics still help investigate hangs. `--profile` requires
218
+ diagnostics enabled and a fresh process without another active profiler or
219
+ retained Yappi session. No extra profiler dependency is needed without `--profile`.
220
+
221
+ ## Citation
222
+
223
+ If you use ReaxKit in your work, please cite:
224
+
225
+ ```text
226
+ Mohammadi Dinani, A., et al. (2026).
227
+ ReaxKit: A Modular Python Toolkit for Preparing, Parsing, and Analyzing ReaxFF Molecular Dynamics Simulations.
228
+ arXiv:2609.22019. https://arxiv.org/abs/2609.22019
229
+
230
+ Source code: https://github.com/ali-m-dinani/reaxkit
231
+ Software archive: https://doi.org/10.5281/zenodo.18485384
232
+ ```
233
+
234
+ ---
235
+
236
+ ## Future Directions
237
+
238
+ * Implement machine learning-based surrogate models for rapid property prediction and active-site identification.
239
+ * Develop a plugin system for user-contributed analysis routines and visualization components.
240
+ * Integrate with Jupyter notebooks for interactive analysis and visualization.
241
+
242
+ If you have any feature request, you can submit it through the ReaxKit's GitHub page, or directly sending an email to `Dinani@psu.edu`.
243
+
244
+ ---
245
+ ## Additional resources:
246
+
247
+ - [AUTHORS.md](AUTHORS.md) — Full credits and acknowledgments.
248
+ - [LICENSE](LICENSE) — Full license terms under the **MIT License**
@@ -0,0 +1,184 @@
1
+ # ReaxKit
2
+
3
+ **ReaxKit** is a modular, extensible Python toolkit for **pre‑processing, post‑processing, and analysis of ReaxFF** molecular dynamics simulations.
4
+ It provides a clean separation between file parsing, analysis routines, and reproducible workflows, with **Python APIs**, a **CLI interface**, and a **Dash-based GUI**.
5
+
6
+ ReaxKit is designed for researchers who want a transparent, scriptable bridge between raw ReaxFF data and quantitative, publication‑ready results.
7
+
8
+ ---
9
+
10
+ ## Key Capabilities
11
+
12
+ ### Engine
13
+ - Shared engine abstractions for consistent parsing and generating input/output files across 3 different ReaxFF simulation engines, namely `ams`, `lammps`, `reaxff`
14
+ - Example IO and generator modules under the `reaxff` engine:
15
+ - ReaxFF input and output files such as `xmolout`, `fort.7`, `fort.13`, `molfra`, and more
16
+ - Input generators for `control`, `geo`, `eregime`, `tregime`, and related files
17
+
18
+ ### Analysis
19
+ - `get-potential-energy --relative --num-atoms N --export energy.csv` exports `potential_energy`, `relative_potential_energy`, `potential_energy_per_atom`, and `relative_potential_energy_per_atom` alongside the existing axes and plotting columns. Relative values use source frame 0 by default (or `--reference-frame`), before sampling. `--per-atom` can instead use each frame's atom count; relative per-atom energy is the difference between the normalized frame and normalized reference energies.
20
+ - Successful checkpointed CLI/workflow analyses consolidate their full recovery data into one verified `*.results.zip` file in the analysis cache, then remove their recovery checkpoint files after all requested outputs are saved. Repeating the same scientific options reuses this cache directly, without extracting batches or rerunning calculations. Interrupted analyses and failed output/cache writes keep their checkpoints for `--resume`. Explicit `--resume` takes precedence over cache reuse. With analysis caching disabled, checkpoints remain available; direct Python executor calls outside a workflow also retain them. Existing checkpoint folders are not swept automatically; successfully resuming one with caching enabled applies the same consolidation and cleanup.
21
+ - `get-hbn-reference-local-polarization` skips the large local, cell, and layer CSV tables by default; add `--export-local-csv` to request them. Summary/mapping output and requested plots or `--write-extxyz` remain available. This only changes exports, not calculations or checkpoint data, and does not delete older CSVs. Per-atom displacement exports remain separately controlled by `--write-displacements` and the output profile.
22
+ - AMS analyses can combine KF/RKF coordinates and charges with an external `fort.78` field schedule: use `--engine ams --input reaxout.kf --fort78 /path/to/fort.78`. Without an override, the adapter looks beside the KF/RKF file. The existing ReaxFF field reader preserves field components and MD iteration numbers; field-dependent analyses require matching iterations, not matching row numbers. Streaming parses the field schedule once. This supports charged-trajectory field export, local potential/field analyses, and charge-versus-field analysis. Missing fields are not replaced with zero.
23
+ - Engine-agnostic analyzers built on ReaxKit's domain data models
24
+ - Analyzer tasks organized around separated request, result, and task objects
25
+ - Analysis components separated from engine IO so the same computations can be reused across scripts, workflows, web UI, and presentation modules
26
+
27
+ ### Workflows
28
+ - Reproducible workflows organized by data handling, file tools, meta orchestration, presentation, and study design
29
+ - Automation paths for common ReaxFF pre-processing, analysis, post-processing, and presentation tasks
30
+
31
+ ### Web UI
32
+ - Dash-based interface components for interactive ReaxFF data inspection
33
+ - Backend, UI, and presentation layers for browser-driven workflows
34
+
35
+ ### Presentation
36
+ - Publication-ready plotting utilities:
37
+ - 2D plots, dual-axis plots, tornado plots, 3D scatter, and heatmaps
38
+ - Video generators
39
+
40
+ ### Utilities
41
+ - Shared data, media, and numerical utilities
42
+ - Common infrastructure used by analysis, workflows, web UI, and presentation modules
43
+
44
+ See the full documentation (API reference, tutorials, examples) on [ReaxKit Site](https://ali-m-dinani.github.io/reaxkit/).
45
+
46
+ ---
47
+
48
+ ## Project Layout
49
+
50
+ ```
51
+ src/reaxkit/
52
+ ├── analysis/ # Engine-agnostic analysis tasks
53
+ ├── cli/ # Command-line entry points
54
+ ├── core/ # Registries and shared core infrastructure
55
+ ├── data/ # Packaged reference data and resources
56
+ ├── domain/ # Central data models, requests, and results
57
+ ├── engine/ # IO handlers and input generators
58
+ ├── help/ # Introspection and help system
59
+ ├── presentation/ # Plotting, active-site views, and media presentation
60
+ ├── utils/ # Shared data, media, and numerical utilities
61
+ ├── webui/ # Dash/web interface backend, UI, and presentation layers
62
+ └── workflows/ # Workflow orchestration and automation
63
+ ```
64
+
65
+ ---
66
+
67
+ ## Testing
68
+
69
+ Run unit tests with:
70
+
71
+ ```bash
72
+ pytest -s tests/
73
+ ```
74
+
75
+ to test the package and get the timing for their execution.
76
+
77
+ ---
78
+
79
+ ## Command diagnostics
80
+
81
+ Diagnostics are disabled by default for every CLI command. Pass `--diagnostics`
82
+ after the command name to write a unique report folder under
83
+ `reaxkit_workspace/logs/diagnostics/<command>_<UTC timestamp>_<unique suffix>/`
84
+ (or beneath your `--project-root`). Its location is printed at command startup.
85
+ Help and argument-parsing errors do not create reports. Recording starts after
86
+ CLI imports and argument parsing, before command execution.
87
+
88
+ - `report.json`: command arguments, interpreter/module paths, host, Slurm allocation,
89
+ timestamps, exit status, and the execution-step report.
90
+ - `console.log`: Python stdout/stderr, including progress, also displayed normally.
91
+ - `stacks.log`: Python stacks for all threads every 60 seconds, annotated with
92
+ UTC timestamps and elapsed seconds. Sample headers contain collection times;
93
+ observer annotations follow within roughly 0.25 seconds. The sampler's own
94
+ stack is excluded, and each stack is limited to 100 frames.
95
+ - `stacks.raw.log`: original cooperative Python stack samples, retained
96
+ independently of the observer.
97
+ - `stack_summary.txt` and `stack_summary.json`: live per-function tables grouped
98
+ by thread, with self/inclusive sample counts and estimated seconds (count times
99
+ sampling interval). Self means the top Python frame; inclusive means anywhere
100
+ in that thread's stack, counting recursive occurrences once per sample.
101
+ These are observations, not function-call counts or exact profiler timings.
102
+ Waiting time is included; inclusive and cross-thread times overlap and must
103
+ not be summed as command elapsed time. Short work between samples is missed.
104
+ - `resources.jsonl`: approximately five-second samples of process CPU time,
105
+ resident memory, and thread count. CPU values are cumulative seconds, not percentages;
106
+ measurements cover the command process, not its subprocesses.
107
+ - `steps.log`: finalized human-readable execution report; `exception.log` records
108
+ Python exceptions when present. `observer.log` contains observer errors, if any.
109
+
110
+ Use `--diagnostics --diagnostic-interval-seconds 30` to enable diagnostics with a
111
+ different stack interval. Place these flags after the command
112
+ name. A Python thread collects referenced frames through `sys._current_frames()`.
113
+ Native code holding the GIL delays stack sampling; missed samples are not
114
+ backfilled, and estimated times can undercount that work. A separate lightweight
115
+ observer continues resource monitoring even while analysis holds the GIL.
116
+ Stack traces are written to files, not repeated on the console.
117
+
118
+ Periodic diagnostics no longer use `faulthandler.dump_traceback_later`: its native
119
+ watchdog can race with thread/frame teardown and crash the interpreter itself.
120
+ ReaxKit does not install or cancel process-wide faulthandler timers or change
121
+ fatal-signal handlers. `PYTHONFAULTHANDLER=1` can still record fatal errors in the
122
+ scheduler log. Remove legacy watchdog wrappers such as `formal_diagnostic.sh`
123
+ when using these built-in diagnostics.
124
+
125
+ On forced termination (including Slurm time limits), finalization may not run.
126
+ Existing console, stack, and resource samples remain; a `running` report with no
127
+ finish time means **unfinished reporting**, not proof the job is still active.
128
+ Native/subprocess writes that bypass Python streams stay in the scheduler logs.
129
+ Reports contain supplied command arguments; inspect them before sharing.
130
+
131
+ ### Deterministic profiling (optional)
132
+
133
+ Install from your clone with `python -m pip install -e '.[profiling]'`, using the
134
+ same interpreter as the ReaxKit executable. Add `--diagnostics --profile` after the command name to
135
+ record actual function-call events and measured durations with Yappi, across the
136
+ main thread and Python worker threads. This is opt-in because instrumentation
137
+ adds overhead. `--profile-clock wall` (default) includes waiting; use
138
+ `--profile-clock cpu` for thread CPU time instead. Only one clock is recorded per run.
139
+
140
+ The same per-command **diagnostics** folder contains `profile_summary.txt`
141
+ (all functions sorted by cumulative time, with calls, primitive/nonrecursive
142
+ calls, self seconds, cumulative seconds, and thread timings), `profile.json`
143
+ (machine-readable equivalent), and `profile.pstat` (call graph for pstats-compatible
144
+ viewers). These files are separate from the estimated `stack_summary.*` tables.
145
+ Self time excludes callees; cumulative time includes them. Inclusive/thread wall
146
+ times overlap and must not be added as job elapsed time. Timings are measured,
147
+ not sampling estimates, but are not overhead-free or infinitely precise.
148
+
149
+ Profiling begins just before command execution and is finalized on normal exit
150
+ or a handled Python error. Startup imports/argument parsing, subprocesses, and
151
+ internal C/Fortran/BLAS stacks are not profiled; visible native call boundaries
152
+ are included. Forced termination can prevent profile files being saved; the
153
+ periodic stack diagnostics still help investigate hangs. `--profile` requires
154
+ diagnostics enabled and a fresh process without another active profiler or
155
+ retained Yappi session. No extra profiler dependency is needed without `--profile`.
156
+
157
+ ## Citation
158
+
159
+ If you use ReaxKit in your work, please cite:
160
+
161
+ ```text
162
+ Mohammadi Dinani, A., et al. (2026).
163
+ ReaxKit: A Modular Python Toolkit for Preparing, Parsing, and Analyzing ReaxFF Molecular Dynamics Simulations.
164
+ arXiv:2609.22019. https://arxiv.org/abs/2609.22019
165
+
166
+ Source code: https://github.com/ali-m-dinani/reaxkit
167
+ Software archive: https://doi.org/10.5281/zenodo.18485384
168
+ ```
169
+
170
+ ---
171
+
172
+ ## Future Directions
173
+
174
+ * Implement machine learning-based surrogate models for rapid property prediction and active-site identification.
175
+ * Develop a plugin system for user-contributed analysis routines and visualization components.
176
+ * Integrate with Jupyter notebooks for interactive analysis and visualization.
177
+
178
+ If you have any feature request, you can submit it through the ReaxKit's GitHub page, or directly sending an email to `Dinani@psu.edu`.
179
+
180
+ ---
181
+ ## Additional resources:
182
+
183
+ - [AUTHORS.md](AUTHORS.md) — Full credits and acknowledgments.
184
+ - [LICENSE](LICENSE) — Full license terms under the **MIT License**
@@ -0,0 +1,108 @@
1
+ [build-system]
2
+ requires = ["setuptools>=77.0.3", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "reaxkit"
7
+ version = "3.2.0"
8
+ description = "A toolkit for parsing, analyzing, and visualizing ReaxFF simulation data."
9
+ authors = [
10
+ { name = "Ali Mohammadi Dinani", email = "alimohammadi2265@gmail.com" },
11
+ { name = "Adri van Duin", email = "acv13@psu.edu" },
12
+ { name = "Yun Kyung Shin", email = "yks2@psu.edu" },
13
+ { name = "Alireza Sepehrinezhad", email = "alireza.sepehri@psu.edu" },
14
+ { name = "Seyed Mahmoud Mortazavi", email = "mahmoud.mortazavi72@gmail.com" },
15
+ { name = "Anirban Phukan", email = "akp6421@psu.edu" },
16
+ { name = "Jupjeet Dhingra", email = "jvd6198@psu.edu" },
17
+ { name = "Swarit Dwivedi", email = "Swarit.Dwivedi@monash.edu" },
18
+ { name = "Asma Ul Hosna", email = "abh6073@psu.edu" },
19
+ { name = "Mozhdeh Mirakhory", email = "mjm8816@psu.edu" },
20
+ ]
21
+ readme = "README.md"
22
+ license = "MIT"
23
+ license-files = ["LICENSE"]
24
+
25
+ requires-python = ">=3.9"
26
+
27
+ dependencies = [
28
+ "numpy",
29
+ "pandas",
30
+ "scipy",
31
+ "matplotlib>=3.6",
32
+ "tqdm",
33
+ "rich",
34
+ "tabulate",
35
+ "PyYAML",
36
+ "rapidfuzz",
37
+ "openpyxl>=3.1",
38
+ "pyarrow",
39
+ "threadpoolctl>=3.1",
40
+ "psutil>=5.9",
41
+ ]
42
+
43
+ [project.urls]
44
+ Homepage = "https://ali-m-dinani.github.io/reaxkit/"
45
+ Documentation = "https://ali-m-dinani.github.io/reaxkit/"
46
+ Repository = "https://github.com/ali-m-dinani/reaxkit"
47
+ Issues = "https://github.com/ali-m-dinani/reaxkit/issues"
48
+
49
+ [project.optional-dependencies]
50
+ profiling = ["yappi>=1.6,<2"]
51
+ plot = [
52
+ "seaborn",
53
+ "plotly",
54
+ "imageio[ffmpeg]",
55
+ ]
56
+ webui = [
57
+ "dash>=3.1,<5",
58
+ "dash_bootstrap_templates",
59
+ "fastapi",
60
+ "duckdb>=1.1,<2",
61
+ ]
62
+ trajectory = [
63
+ "MDAnalysis",
64
+ "freud-analysis",
65
+ "ovito",
66
+ ]
67
+ materials = [
68
+ "ase",
69
+ "mp_api",
70
+ "pymatgen",
71
+ ]
72
+ graph = [
73
+ "networkx",
74
+ "igraph",
75
+ ]
76
+ ml = [
77
+ "dscribe",
78
+ "spacy",
79
+ "scikit-learn",
80
+ ]
81
+ io = [
82
+ "h5py",
83
+ "python-docx",
84
+ "zstandard",
85
+ ]
86
+ engines = [
87
+ "lammps",
88
+ "plams",
89
+ ]
90
+ all = [
91
+ "reaxkit[plot,webui,trajectory,materials,graph,ml,io,engines,profiling]",
92
+ ]
93
+
94
+ [project.scripts]
95
+ reaxkit = "reaxkit.cli_startup:main"
96
+
97
+ [tool.setuptools]
98
+ package-dir = { "" = "src" }
99
+
100
+ [tool.setuptools.packages.find]
101
+ where = ["src"]
102
+
103
+ [tool.setuptools.package-data]
104
+ reaxkit = ["**/*.yaml", "**/*.xlsx", "**/*.cif", "webui/**/*.json", "webui/assets/*.js", "webui/assets/*.css", "webui/assets/*.svg"]
105
+
106
+ [tool.pytest.ini_options]
107
+ testpaths = ["tests"]
108
+
@@ -0,0 +1,7 @@
1
+ [metadata]
2
+ url = https://ali-m-dinani.github.io/reaxkit/
3
+
4
+ [egg_info]
5
+ tag_build =
6
+ tag_date = 0
7
+
@@ -10,6 +10,7 @@ from reaxkit.analysis import (
10
10
  connectivity,
11
11
  control,
12
12
  electrostatics,
13
+ ferroelectrics,
13
14
  force_field,
14
15
  kinematics,
15
16
  molecular_analysis,
@@ -23,6 +24,7 @@ __all__ = [
23
24
  "connectivity",
24
25
  "control",
25
26
  "electrostatics",
27
+ "ferroelectrics",
26
28
  "force_field",
27
29
  "kinematics",
28
30
  "molecular_analysis",
@@ -18,6 +18,7 @@ from reaxkit.analysis.active_sites.models import (
18
18
  ActiveSiteEventDiagnosticsResult,
19
19
  )
20
20
  from reaxkit.analysis.active_sites.pbc import frame_cell_matrix, pairwise_min_image_distances
21
+ from reaxkit.core.runtime.frame_tables import selected_frame_envelopes
21
22
  from reaxkit.analysis.base import AnalysisTask
22
23
  from reaxkit.core.registry.analysis_task_registry import register_task
23
24
  from reaxkit.domain.data_models import ConnectivityTrajectoryData, TrajectoryData
@@ -100,6 +101,7 @@ class ActiveSiteEventDiagnosticsTask(AnalysisTask):
100
101
 
101
102
  VERSION = "3"
102
103
  required_data = TrajectoryData
104
+ supports_selective_streaming = True
103
105
 
104
106
  def required_data_for(self, request: object, args: dict | None = None):
105
107
  return TrajectoryData
@@ -287,9 +289,8 @@ class ActiveSiteEventDiagnosticsTask(AnalysisTask):
287
289
  every = max(1, int(request.every))
288
290
  limit = max(1, int(request.max_diag_frames))
289
291
 
290
- for stream_index, data in enumerate(frames):
291
- if stream_index % every:
292
- continue
292
+ for envelope in selected_frame_envelopes(frames, request):
293
+ stream_index, data = envelope.source_frame, envelope.payload
293
294
  if analyzed >= limit:
294
295
  break
295
296
  if isinstance(data, ConnectivityTrajectoryData):
@@ -23,6 +23,7 @@ import pandas as pd
23
23
  from reaxkit.analysis.active_sites.models import ActiveSiteEventsRequest, ActiveSiteEventsResult
24
24
  from reaxkit.analysis.active_sites.pbc import frame_cell_matrix, pairwise_min_image_distances
25
25
  from reaxkit.analysis.active_sites.tract_compat import to_tract_events_table
26
+ from reaxkit.core.runtime.frame_tables import selected_frame_envelopes
26
27
  from reaxkit.analysis.base import AnalysisTask
27
28
  from reaxkit.core.registry.analysis_task_registry import register_task
28
29
  from reaxkit.domain.data_models import ConnectivityTrajectoryData, TrajectoryData
@@ -179,6 +180,8 @@ def _rkf_like_input(args: dict) -> bool:
179
180
  class ActiveSiteEventsTask(AnalysisTask):
180
181
  """Extract persistent C-O and C-Si active-site events over trajectory frames."""
181
182
 
183
+ VERSION = "1"
184
+ supports_selective_streaming = True
182
185
  required_data = ConnectivityTrajectoryData
183
186
 
184
187
  def required_data_for(self, request: object, args: dict | None = None):
@@ -582,9 +585,8 @@ class ActiveSiteEventsTask(AnalysisTask):
582
585
  use_bo = False
583
586
  every = max(1, int(request.every))
584
587
 
585
- for stream_index, data in enumerate(frames):
586
- if stream_index % every:
587
- continue
588
+ for envelope in selected_frame_envelopes(frames, request):
589
+ stream_index, data = envelope.source_frame, envelope.payload
588
590
  if isinstance(data, ConnectivityTrajectoryData):
589
591
  trajectory = data.trajectory
590
592
  connectivity_data = data
@@ -554,6 +554,7 @@ def _label_edge_atoms(
554
554
  class ActiveSiteStructuralTask(AnalysisTask):
555
555
  """Compute per-atom active-site structural descriptors on one frame."""
556
556
 
557
+ VERSION = "1"
557
558
  required_data = ConnectivityTrajectoryData
558
559
 
559
560
  def required_data_for(self, request: object, args: dict | None = None):