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.
- reaxkit-3.2.0/PKG-INFO +248 -0
- reaxkit-3.2.0/README.md +184 -0
- reaxkit-3.2.0/pyproject.toml +108 -0
- reaxkit-3.2.0/setup.cfg +7 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/__init__.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/event_diagnostics.py +4 -3
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/events.py +5 -3
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/structural.py +1 -0
- reaxkit-3.2.0/src/reaxkit/analysis/composed/RDF_analyzer.py +164 -0
- reaxkit-3.2.0/src/reaxkit/analysis/composed/__init__.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/connectivity/connectivity.py +95 -52
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/connectivity/coordination.py +12 -21
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/connectivity/hybridization.py +12 -21
- reaxkit-3.2.0/src/reaxkit/analysis/connectivity/stream_state.py +168 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/control/control.py +1 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/data/analysis_task_dataclass_map.yaml +136 -6
- reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/__init__.py +59 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/electrostatics/charges.py +30 -4
- reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/dielectric_constant.py +328 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/electrostatics/electrostatics.py +368 -56
- reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/potential_and_electric_field/__init__.py +26 -0
- reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/potential_and_electric_field/analysis.py +344 -0
- reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/potential_and_electric_field/calculation.py +330 -0
- reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/potential_and_electric_field/parameters.py +51 -0
- reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/potential_and_electric_field/physics.py +61 -0
- reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/potential_and_electric_field/spatial.py +156 -0
- reaxkit-3.2.0/src/reaxkit/analysis/electrostatics/potential_and_electric_field/trajectory.py +209 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/__init__.py +92 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/basal_plane_displacement_for_dipole_moment/__init__.py +39 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/basal_plane_displacement_for_dipole_moment/dipole.py +343 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/basal_plane_displacement_for_dipole_moment/local_polarization.py +420 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/basal_plane_displacement_for_dipole_moment/polarization.py +230 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/basal_plane_displacement_for_dipole_moment/projected_polarity.py +558 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/binned_dynamic_charge.py +671 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/charge_extxyz.py +373 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/charge_field.py +366 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/dynamic_charge.py +683 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/four_folded_wurtzite/__init__.py +41 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/four_folded_wurtzite/neighbors.py +654 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/four_folded_wurtzite/plotting.py +184 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/four_folded_wurtzite/polarity.py +470 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/four_folded_wurtzite/trajectory.py +270 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/hbn_reference/AlN_hbn.cif +34 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/hbn_reference/__init__.py +57 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/hbn_reference/al_neighborhoods.py +121 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/hbn_reference/domain_wall_velocity.py +401 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/hbn_reference/local_polarization.py +698 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/hbn_reference/polarization.py +1082 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/hbn_reference/projected_polarity.py +626 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/hbn_reference/threshold_growth.py +233 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/neighbor_stream.py +38 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/polarity_stream.py +97 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/polarization_stream.py +141 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/poled_counts.py +85 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/switching_kinetics/__init__.py +19 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/switching_kinetics/fitting.py +278 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/switching_kinetics/kai.py +63 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/switching_kinetics/nls.py +64 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/switching_kinetics/snng.py +64 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/three_folded_wurtzite/__init__.py +47 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/three_folded_wurtzite/neighbors.py +321 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/three_folded_wurtzite/polarity.py +386 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/three_folded_wurtzite/polarization.py +277 -0
- reaxkit-3.2.0/src/reaxkit/analysis/ferroelectrics/three_folded_wurtzite/trajectory.py +249 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/force_field/MM_summary.py +1 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/force_field/diagnostic_beeswarm.py +1 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/force_field/diagnostics.py +1 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/force_field/force_field.py +1 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/force_field/optimization_progress.py +1 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/force_field/report.py +4 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/force_field/trainset.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/kinematics/kinematics.py +1 -0
- reaxkit-3.2.0/src/reaxkit/analysis/molecular_analysis/frame_stream.py +72 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/molecular_analysis/isomer_detection.py +1 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/molecular_analysis/isomer_representative_detection.py +1 -0
- reaxkit-3.2.0/src/reaxkit/analysis/molecular_analysis/lifetime_stream.py +75 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/molecular_analysis/molecular_analysis.py +42 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/params/params.py +1 -0
- reaxkit-3.2.0/src/reaxkit/analysis/stress_strain/streaming.py +73 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/stress_strain/z_binned_deformation_gradient_strain.py +16 -6
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/stress_strain/z_binned_strain_using_top_bottom_atoms.py +18 -8
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/timeseries/geometry_optimization.py +1 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/timeseries/timeseries.py +205 -123
- reaxkit-3.2.0/src/reaxkit/analysis/trajectory/blocked_msd.py +110 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/diffusivity.py +114 -49
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/dihedral.py +12 -21
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/frame_count.py +9 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/msd.py +15 -1
- reaxkit-3.2.0/src/reaxkit/analysis/trajectory/msd_task.py +83 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/rdf.py +66 -52
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/relabel.py +39 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/voronoi.py +42 -10
- reaxkit-3.2.0/src/reaxkit/cli/__init__.py +5 -0
- reaxkit-3.2.0/src/reaxkit/cli/help_flag_registry.py +518 -0
- reaxkit-3.2.0/src/reaxkit/cli/help_metadata.py +80 -0
- reaxkit-3.2.0/src/reaxkit/cli/inventory.py +56 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/cli/main.py +206 -73
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/cli/path.py +51 -0
- reaxkit-3.2.0/src/reaxkit/cli_startup.py +35 -0
- reaxkit-3.2.0/src/reaxkit/core/analysis_executor.py +7 -0
- reaxkit-3.2.0/src/reaxkit/core/command_registry.py +33 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/platform/log.py +4 -0
- reaxkit-3.2.0/src/reaxkit/core/registry/analysis_cli_routing_registry.py +528 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/registry/command_catalog.py +12 -1
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/registry/generator_cli_routing_registry.py +2 -1
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/registry/workflow_cli_routing_registry.py +1 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/resolve/command_alias_resolver.py +1 -1
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/results_shaping/result_time_enrichment.py +33 -10
- reaxkit-3.2.0/src/reaxkit/core/runtime/__init__.py +78 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/runtime/analysis_executor.py +369 -59
- reaxkit-3.2.0/src/reaxkit/core/runtime/analysis_task_manifest.py +174 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/artifacts.py +426 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/benchmark.py +256 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/checkpoint_bonds.py +63 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/checkpoint_policy.py +72 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/checkpoint_results.py +208 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/checkpoint_trajectory.py +132 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/cli_policy.py +68 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/command_diagnostics.py +266 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/command_inventory.py +163 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/command_profile.py +61 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/execution_contracts.py +366 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/frame_pipeline.py +370 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/frame_tables.py +88 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/runtime/generator_runtime.py +21 -2
- reaxkit-3.2.0/src/reaxkit/core/runtime/packed_results.py +152 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/priority_task_manifest.py +48 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/runtime/progress.py +104 -42
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/runtime/provenance.py +13 -3
- reaxkit-3.2.0/src/reaxkit/core/runtime/reducers.py +158 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/reference_frames.py +50 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/result_store.py +448 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/result_stream.py +86 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/stack_summary.py +88 -0
- reaxkit-3.2.0/src/reaxkit/core/runtime/trajectory_spool.py +93 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/storage/cache_manager.py +22 -3
- reaxkit-3.2.0/src/reaxkit/core/storage/frame_store.py +1226 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/storage/storage_layout.py +108 -59
- reaxkit-3.2.0/src/reaxkit/core/task_registry.py +14 -0
- reaxkit-3.2.0/src/reaxkit/core/task_resolution_using_alias.py +21 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/domain/data_models.py +9 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/ams/adapter.py +507 -17
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/ams/rkf_handler.py +2 -0
- reaxkit-3.2.0/src/reaxkit/engine/ams/trajectory_frame.py +74 -0
- reaxkit-3.2.0/src/reaxkit/engine/common/generators/extended_xyz_generator.py +205 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/generators/ffield_generator.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/generators/structure_transformers.py +19 -2
- reaxkit-3.2.0/src/reaxkit/engine/common/generators/trajectory_frame.py +60 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/generators/xyz_generator.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/io/ffield_handler.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/lammps/dump_handler.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/lammps/lammps_log_handler.py +2 -0
- reaxkit-3.2.0/src/reaxkit/engine/lammps/trajectory_frame.py +109 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter.py +62 -49
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/loaders_dynamics.py +19 -6
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/loaders_properties.py +70 -9
- reaxkit-3.2.0/src/reaxkit/engine/reaxff/adapter_parts/molecular_stream.py +49 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/normalizers.py +2 -1
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/streaming.py +168 -47
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/addmol_generator.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/charges_generator.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/control_generator.py +2 -0
- reaxkit-3.2.0/src/reaxkit/engine/reaxff/generators/elastic_tensor.py +69 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/eregime_generator.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/fort7_repair.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/geo_generator.py +89 -12
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/kopple2_generator.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/trainset_elastic_energy.py +39 -5
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/trainset_elastic_geometry.py +27 -9
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/trainset_heatfo.py +6 -3
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/trainset_mp.py +35 -43
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/trainset_source_adapter.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/trainset_yaml.py +53 -13
- reaxkit-3.2.0/src/reaxkit/engine/reaxff/generators/trajectory_frame.py +117 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/tregime_generator.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/vregime_generator.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/xmolout_generator.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/base.py +41 -13
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/control_handler.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/eregime_handler.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort13_handler.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort57_handler.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort73_handler.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort74_handler.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort76_handler.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort78_handler.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort79_handler.py +2 -0
- reaxkit-3.2.0/src/reaxkit/engine/reaxff/io/fort7_handler.py +1392 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort83_handler.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/fort99_handler.py +2 -0
- reaxkit-3.2.0/src/reaxkit/engine/reaxff/io/frame_header_validation.py +42 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/geo_handler.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/geo_restraint_handler.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/molfra_handler.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/params_handler.py +2 -0
- reaxkit-3.2.0/src/reaxkit/engine/reaxff/io/stream_metrics.py +165 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/summary_handler.py +4 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/trainset_handler.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/vels_handler.py +2 -0
- reaxkit-3.2.0/src/reaxkit/engine/reaxff/io/xmolout_handler.py +1035 -0
- reaxkit-3.2.0/src/reaxkit/engine/reaxff/quick_io/__init__.py +21 -0
- reaxkit-3.2.0/src/reaxkit/engine/reaxff/quick_io/charges.py +186 -0
- reaxkit-3.2.0/src/reaxkit/engine/reaxff/quick_io/xmolout_identity.py +81 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/help/data/help_information_sources.yaml +13 -3
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/help/help_index_loader.py +153 -91
- reaxkit-3.2.0/src/reaxkit/io/__init__.py +6 -0
- reaxkit-3.2.0/src/reaxkit/io/base_handler.py +5 -0
- reaxkit-3.2.0/src/reaxkit/io/handlers/__init__.py +5 -0
- reaxkit-3.2.0/src/reaxkit/io/handlers/xmolout_handler.py +5 -0
- reaxkit-3.2.0/src/reaxkit/presentation/color_styles.py +78 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/dispatcher.py +25 -6
- reaxkit-3.2.0/src/reaxkit/presentation/kymograph.py +32 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/persist.py +90 -17
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/registry.py +17 -4
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/base.py +6 -1
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/boxplot.py +2 -18
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/errorbar.py +7 -18
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/grouped_bar.py +3 -1
- reaxkit-3.2.0/src/reaxkit/presentation/plot/renderers/kymograph.py +28 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/multi_subplots.py +6 -1
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/single.py +17 -22
- reaxkit-3.2.0/src/reaxkit/presentation/plot_styles.py +207 -0
- reaxkit-3.2.0/src/reaxkit/presentation/powerpoint.py +345 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/specs.py +14 -0
- reaxkit-3.2.0/src/reaxkit/presentation/workflow_artifacts.py +154 -0
- reaxkit-3.2.0/src/reaxkit/utils/alias.py +37 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/equation_of_states.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/numerical/autocorrelation.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/numerical/extrema_finder.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/numerical/fft.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/numerical/moving_average.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/numerical/numerical_calcs.py +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/numerical/signal_ops.py +2 -0
- reaxkit-3.2.0/src/reaxkit/webui/assets/performance.js +35 -0
- reaxkit-3.2.0/src/reaxkit/webui/assets/plot_queries.js +75 -0
- reaxkit-3.2.0/src/reaxkit/webui/assets/workspace-icons.css +8 -0
- reaxkit-3.2.0/src/reaxkit/webui/assets/workspace.css +236 -0
- reaxkit-3.2.0/src/reaxkit/webui/assets/workspace.js +248 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/adapters/executor_adapter.py +13 -2
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/adapters/result_normalizer.py +15 -4
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/api.py +50 -5
- reaxkit-3.2.0/src/reaxkit/webui/backend/artifact_tables.py +324 -0
- reaxkit-3.2.0/src/reaxkit/webui/backend/byte_cache.py +65 -0
- reaxkit-3.2.0/src/reaxkit/webui/backend/jobs.py +475 -0
- reaxkit-3.2.0/src/reaxkit/webui/backend/metrics.py +27 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/node_runtime.py +28 -20
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/pipeline_store.py +63 -4
- reaxkit-3.2.0/src/reaxkit/webui/backend/plot_queries.py +289 -0
- reaxkit-3.2.0/src/reaxkit/webui/backend/row_filters.py +92 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/schemas.py +1 -0
- reaxkit-3.2.0/src/reaxkit/webui/backend/serializer.py +122 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/tabular_payload.py +4 -1
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/dash_app.py +16 -3
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/presentation/perf_config.py +6 -0
- reaxkit-3.2.0/src/reaxkit/webui/presentation/plot_summary.py +123 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/presentation/registry.py +20 -0
- reaxkit-3.2.0/src/reaxkit/webui/presentation/ui_performance.json +12 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/callback_helpers.py +23 -101
- reaxkit-3.2.0/src/reaxkit/webui/ui/analysis/callback_sections/canvas_callbacks.py +309 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/callback_sections/execution_callbacks.py +16 -98
- reaxkit-3.2.0/src/reaxkit/webui/ui/analysis/callback_sections/job_callbacks.py +99 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/callback_sections/pipeline_callbacks.py +39 -27
- reaxkit-3.2.0/src/reaxkit/webui/ui/analysis/callback_sections/plot_callbacks.py +129 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/callback_sections/properties_callbacks.py +17 -6
- reaxkit-3.2.0/src/reaxkit/webui/ui/analysis/callback_sections/table_callbacks.py +84 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/callback_sections/visualization_callbacks.py +3 -3
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/callbacks.py +6 -0
- reaxkit-3.2.0/src/reaxkit/webui/ui/analysis/components.py +78 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/tasks/autogen.py +87 -171
- reaxkit-3.2.0/src/reaxkit/webui/ui/analysis/tasks/validation.py +90 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/layout.py +23 -6
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/logs/callbacks.py +12 -3
- reaxkit-3.2.0/src/reaxkit/webui/ui/shared/forms.py +51 -0
- reaxkit-3.2.0/src/reaxkit/webui/ui/shared/styles.py +3 -0
- reaxkit-3.2.0/src/reaxkit/webui/ui/shared/workspace.py +46 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/shell/callbacks.py +11 -11
- reaxkit-3.2.0/src/reaxkit/webui/ui/shell/components.py +40 -0
- reaxkit-3.2.0/src/reaxkit/webui/ui/shell/workspace_callbacks.py +103 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/active_site_workflow.py +48 -44
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/connectivity_workflow.py +11 -2
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/data/workflow_dataclass_map.yaml +721 -18
- reaxkit-3.2.0/src/reaxkit/workflows/electrostatics/__init__.py +13 -0
- reaxkit-3.2.0/src/reaxkit/workflows/electrostatics/dielectric_constant_workflow.py +345 -0
- {reaxkit-3.0.3/src/reaxkit/workflows → reaxkit-3.2.0/src/reaxkit/workflows/electrostatics}/electrostatics_workflow.py +87 -21
- reaxkit-3.2.0/src/reaxkit/workflows/electrostatics/potential_and_electric_field/__init__.py +15 -0
- reaxkit-3.2.0/src/reaxkit/workflows/electrostatics/potential_and_electric_field/artifacts.py +158 -0
- reaxkit-3.2.0/src/reaxkit/workflows/electrostatics/potential_and_electric_field/common.py +195 -0
- reaxkit-3.2.0/src/reaxkit/workflows/electrostatics/potential_and_electric_field/potential_and_electric_field_workflow.py +140 -0
- reaxkit-3.2.0/src/reaxkit/workflows/electrostatics/potential_and_electric_field/trajectory_workflow.py +86 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/__init__.py +9 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/basal_plane_displacement_for_dipole_moment/__init__.py +34 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/basal_plane_displacement_for_dipole_moment/dipole_workflow.py +107 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/basal_plane_displacement_for_dipole_moment/local_polarization_workflow.py +403 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/basal_plane_displacement_for_dipole_moment/polarization_workflow.py +162 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/basal_plane_displacement_for_dipole_moment/projected_polarity_workflow.py +333 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/binned_dynamic_charge_workflow.py +161 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/charge_extxyz_workflow.py +150 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/charge_field_workflow.py +317 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/dynamic_charge_workflow.py +440 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/four_folded_wurtzite/__init__.py +29 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/four_folded_wurtzite/artifacts.py +231 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/four_folded_wurtzite/common.py +218 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/four_folded_wurtzite/neighbors_workflow.py +93 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/four_folded_wurtzite/polarity_trajectory_workflow.py +187 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/four_folded_wurtzite/polarity_workflow.py +180 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/hbn_reference/__init__.py +17 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/hbn_reference/domain_wall_velocity_workflow.py +85 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/hbn_reference/fraction_growth_workflow.py +336 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/hbn_reference/local_polarization_workflow.py +510 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/hbn_reference/polarization_workflow.py +263 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/hbn_reference/projected_polarity_workflow.py +394 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/switching_kinetics/__init__.py +10 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/switching_kinetics/common.py +680 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/switching_kinetics/comparison_workflow.py +75 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/switching_kinetics/kai_workflow.py +71 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/switching_kinetics/nls_workflow.py +71 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/switching_kinetics/plotting.py +233 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/switching_kinetics/snng_workflow.py +71 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/three_folded_wurtzite/__init__.py +37 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/three_folded_wurtzite/artifacts.py +130 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/three_folded_wurtzite/common.py +139 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/three_folded_wurtzite/neighbors_workflow.py +96 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/three_folded_wurtzite/polarity_trajectory_workflow.py +151 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/three_folded_wurtzite/polarity_workflow.py +190 -0
- reaxkit-3.2.0/src/reaxkit/workflows/ferroelectrics/three_folded_wurtzite/polarization_workflow.py +233 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/addmol_workflow.py +2 -2
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/charges_workflow.py +2 -2
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/control_workflow.py +9 -2
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/eregime_workflow.py +1 -1
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/ffield_workflow.py +133 -173
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/fort7_workflow.py +2 -2
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/geo_workflow.py +79 -39
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/isomer_trainset_workflow.py +13 -13
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/isomer_workflow.py +7 -7
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/jaguar_isomer_workflow.py +9 -9
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/trainset_export.py +5 -2
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/trainset_workflow.py +75 -75
- reaxkit-3.2.0/src/reaxkit/workflows/force_field_opt/data/template_ffield_opt_figure_generator.xlsx +0 -0
- reaxkit-3.2.0/src/reaxkit/workflows/force_field_opt/data/template_ffield_opt_figure_generator_legacy.xlsx +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/get_ffield_opt_plots.py +134 -127
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/get_ffield_opt_report.py +13 -13
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/get_force_field_opt_geo_files.py +22 -8
- reaxkit-3.2.0/src/reaxkit/workflows/force_field_opt/plot_from_excel.py +205 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/kinematics_workflow.py +21 -3
- reaxkit-3.2.0/src/reaxkit/workflows/meta/gui_workflow.py +38 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/meta/manage_workspace_workflow.py +22 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/molecular_analysis_workflow.py +8 -2
- reaxkit-3.2.0/src/reaxkit/workflows/per_file/__init__.py +2 -0
- reaxkit-3.2.0/src/reaxkit/workflows/per_file/fort7_workflow.py +289 -0
- reaxkit-3.2.0/src/reaxkit/workflows/result_bundle.py +8 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/stress_strain/z_binned_strain_workflow.py +6 -6
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/study_design/runtime.py +35 -39
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/timeseries/common.py +177 -30
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_a.py +34 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_alpha.py +34 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_b.py +34 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_beta.py +34 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_c.py +34 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/timeseries/get_cell_dimensions.py +13 -1
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/timeseries/get_charge.py +10 -4
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_density.py +34 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_displacement.py +40 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_elapsed_time.py +34 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_electric_field.py +46 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_eregime.py +29 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/timeseries/get_frames_count.py +16 -11
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_gamma.py +34 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_geometry_optimization.py +39 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/timeseries/get_molecular_frequency.py +10 -2
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_molecular_totals.py +32 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_num_of_atoms.py +34 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_partial_energy.py +54 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_potential_energy.py +62 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_pressure.py +34 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_restraint.py +41 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_temperature.py +34 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_total_atoms.py +34 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_total_molecular_mass.py +34 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_total_molecules.py +34 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_trajectory.py +39 -0
- reaxkit-3.2.0/src/reaxkit/workflows/timeseries/get_volume.py +34 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/timeseries/timeseries_workflow.py +48 -31
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/trajectory_workflow.py +120 -21
- reaxkit-3.2.0/src/reaxkit.egg-info/PKG-INFO +248 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit.egg-info/SOURCES.txt +177 -2
- reaxkit-3.2.0/src/reaxkit.egg-info/entry_points.txt +2 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit.egg-info/requires.txt +11 -4
- reaxkit-3.0.3/AUTHORS.md +0 -26
- reaxkit-3.0.3/PKG-INFO +0 -155
- reaxkit-3.0.3/README.md +0 -101
- reaxkit-3.0.3/pyproject.toml +0 -93
- reaxkit-3.0.3/setup.cfg +0 -4
- reaxkit-3.0.3/src/reaxkit/analysis/electrostatics/__init__.py +0 -33
- reaxkit-3.0.3/src/reaxkit/cli/__init__.py +0 -3
- reaxkit-3.0.3/src/reaxkit/core/registry/analysis_cli_routing_registry.py +0 -266
- reaxkit-3.0.3/src/reaxkit/core/runtime/__init__.py +0 -10
- reaxkit-3.0.3/src/reaxkit/engine/reaxff/io/fort7_handler.py +0 -663
- reaxkit-3.0.3/src/reaxkit/engine/reaxff/io/xmolout_handler.py +0 -490
- reaxkit-3.0.3/src/reaxkit/webui/backend/serializer.py +0 -76
- reaxkit-3.0.3/src/reaxkit/webui/ui/analysis/callback_sections/canvas_callbacks.py +0 -495
- reaxkit-3.0.3/src/reaxkit/webui/ui/analysis/components.py +0 -59
- reaxkit-3.0.3/src/reaxkit/webui/ui/shared/styles.py +0 -227
- reaxkit-3.0.3/src/reaxkit/webui/ui/shell/components.py +0 -49
- reaxkit-3.0.3/src/reaxkit/workflows/force_field_opt/data/template_ffield_opt_figure_generator.xlsx +0 -0
- reaxkit-3.0.3/src/reaxkit/workflows/meta/gui_workflow.py +0 -46
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_a.py +0 -18
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_alpha.py +0 -18
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_b.py +0 -18
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_beta.py +0 -18
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_c.py +0 -18
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_density.py +0 -18
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_displacement.py +0 -31
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_elapsed_time.py +0 -18
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_electric_field.py +0 -40
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_eregime.py +0 -20
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_gamma.py +0 -18
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_geometry_optimization.py +0 -27
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_molecular_totals.py +0 -21
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_num_of_atoms.py +0 -18
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_partial_energy.py +0 -25
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_potential_energy.py +0 -23
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_pressure.py +0 -18
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_restraint.py +0 -34
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_temperature.py +0 -18
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_total_atoms.py +0 -18
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_total_molecular_mass.py +0 -18
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_total_molecules.py +0 -18
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_trajectory.py +0 -30
- reaxkit-3.0.3/src/reaxkit/workflows/timeseries/get_volume.py +0 -18
- reaxkit-3.0.3/src/reaxkit.egg-info/PKG-INFO +0 -155
- reaxkit-3.0.3/src/reaxkit.egg-info/entry_points.txt +0 -2
- {reaxkit-3.0.3 → reaxkit-3.2.0}/LICENSE +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/README_FORMAT.yaml +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/classification.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/defects.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/models.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/pbc.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/active_sites/tract_compat.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/base.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/connectivity/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/control/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/data/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/force_field/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/kinematics/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/molecular_analysis/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/molecular_analysis/isomer_trainset.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/molecular_analysis/jaguar_isomer_jobs.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/params/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/stress_strain/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/stress_strain/common.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/timeseries/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/trajectory/pbc.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/analysis/validation.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/platform/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/platform/constants.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/platform/engine_resolver.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/platform/exceptions.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/platform/human_log.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/platform/paths.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/registry/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/registry/analysis_task_registry.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/resolve/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/resolve/alias.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/resolve/user_command_aliases.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/results_shaping/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/results_shaping/result_bundle.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/storage/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/storage/parsed_store.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/aggregate_engine.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/analyze_engine.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/init.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/io.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/logging.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/manage_engine.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/naming.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/present_engine.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/run_engine.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/study/schema.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/utils/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/core/utils/frame_utils.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/count_loc.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/data/constants.yaml +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/data/units.yaml +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/data/variable_aliases.yaml +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/domain/base_request.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/domain/base_result.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/ams/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/ams/data/ams_io_dataclass_map.yaml +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/base.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/data/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/data/common_generator_capabilities.yaml +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/generators/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/io/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/common/io/geo_io.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/lammps/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/lammps/adapter.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/lammps/data/lammps_io_dataclass_map.yaml +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/io_paths.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/loaders_forcefield.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/timing.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/adapter_parts/writers.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/data/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/data/reaxff_generator_capabilities.yaml +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/data/reaxff_input_files_contents.yaml +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/data/reaxff_io_dataclass_map.yaml +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/data/reaxff_output_files_contents.yaml +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/generators/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/engine/reaxff/io/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/help/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/help/data/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/help/data/help_intents.yaml +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/help/introspection_utils.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/active_sites/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/active_sites/plot_exports.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/active_sites/reporting.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/convert.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/export_utils.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/movie/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/movie/make_video.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/beeswarm.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/diagnostic_evolution.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/directed.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/dual_yaxis.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/heatmap2d.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/scatter3d.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/tornado.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/wireframe3d.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/plot/renderers/wireframe3d_subplots.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/report_registry.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/reporting.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/stress_strain/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/stress_strain/z_binned_strain_plots.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/presentation/units.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/data/utils_functions_contents.yaml +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/utils/numerical/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/app.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/adapters/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/adapters/engine_probe.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/backend/utility_registry.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/callbacks.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/presentation/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/presentation/renderers/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/presentation/renderers/histogram.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/presentation/renderers/scatter3d.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/presentation/renderers/single.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/runtime_paths.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/callback_sections/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/tasks/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/tasks/form_utils.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/analysis/tasks/ui_hints.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/logs/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/logs/components.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/shared/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/shared/debounce.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/webui/ui/shell/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/data/workflow_command_metadata.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/fort83_workflow.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/kopple2_workflow.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/params_workflow.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/tregime_workflow.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/vregime_workflow.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/file_tools/xmolout_workflow.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/cell_parameters.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/charge.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/energy_categories.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/geometry_targets.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/heatfo.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/force_field_opt/report_linkage.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/meta/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/meta/command_alias_workflow.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/meta/help_workflow.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/meta/introspection_workflow.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/meta/study_workflow.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/presentation/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/presentation/gen_plot_workflow.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/presentation/gen_video_workflow.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/presentation/plot_atom_property_workflow.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/stress_strain/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/study_design/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/study_design/cli_help.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/study_design/study_workflow.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit/workflows/timeseries/__init__.py +0 -0
- {reaxkit-3.0.3 → reaxkit-3.2.0}/src/reaxkit.egg-info/dependency_links.txt +0 -0
- {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**
|
reaxkit-3.2.0/README.md
ADDED
|
@@ -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
|
+
|
reaxkit-3.2.0/setup.cfg
ADDED
|
@@ -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
|
|
291
|
-
|
|
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
|
|
586
|
-
|
|
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):
|