CodeEntropy 2.1.0__tar.gz → 2.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.
- {codeentropy-2.1.0 → codeentropy-2.2.0}/.github/workflows/daily.yaml +5 -3
- {codeentropy-2.1.0 → codeentropy-2.2.0}/.github/workflows/pr.yaml +63 -25
- codeentropy-2.2.0/.github/workflows/update_regression_baselines.yaml +44 -0
- codeentropy-2.2.0/.github/workflows/weekly-regression.yaml +90 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/.gitignore +1 -1
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CITATION.cff +2 -2
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/__init__.py +1 -1
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/config/runtime.py +8 -2
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/entropy/nodes/configurational.py +1 -1
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/entropy/nodes/orientational.py +1 -1
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/entropy/nodes/vibrational.py +2 -2
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/entropy/workflow.py +23 -13
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/dihedrals.py +239 -237
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/level_dag.py +3 -16
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/mda.py +91 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/neighbors.py +10 -13
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/nodes/conformations.py +5 -31
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/nodes/covariance.py +1 -1
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/nodes/find_neighbors.py +3 -1
- codeentropy-2.2.0/CodeEntropy/levels/search.py +289 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/results/reporter.py +2 -2
- {codeentropy-2.1.0 → codeentropy-2.2.0}/PKG-INFO +3 -1
- {codeentropy-2.1.0 → codeentropy-2.2.0}/conda-recipe/meta.yaml +2 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/developer_guide.rst +37 -4
- {codeentropy-2.1.0 → codeentropy-2.2.0}/pyproject.toml +13 -1
- codeentropy-2.2.0/tests/__init__.py +1 -0
- codeentropy-2.2.0/tests/regression/baselines/benzaldehyde/axes_off.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/benzaldehyde/combined_forcetorque_false.json +45 -0
- codeentropy-2.1.0/tests/regression/baselines/benzaldehyde.json → codeentropy-2.2.0/tests/regression/baselines/benzaldehyde/default.json +7 -7
- codeentropy-2.2.0/tests/regression/baselines/benzaldehyde/frame_window.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/benzaldehyde/grouping_each.json +153 -0
- codeentropy-2.1.0/tests/regression/baselines/benzaldehyde_rad.json → codeentropy-2.2.0/tests/regression/baselines/benzaldehyde/rad.json +12 -12
- codeentropy-2.2.0/tests/regression/baselines/benzaldehyde/selection_subset.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/benzene/axes_off.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/benzene/combined_forcetorque_off.json +45 -0
- codeentropy-2.1.0/tests/regression/baselines/benzene.json → codeentropy-2.2.0/tests/regression/baselines/benzene/default.json +6 -6
- codeentropy-2.2.0/tests/regression/baselines/benzene/frame_window.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/benzene/grouping_each.json +153 -0
- codeentropy-2.1.0/tests/regression/baselines/benzene_rad.json → codeentropy-2.2.0/tests/regression/baselines/benzene/rad.json +11 -11
- codeentropy-2.2.0/tests/regression/baselines/benzene/selection_subset.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/cyclohexane/axes_off.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/cyclohexane/combined_forcetorque_off.json +45 -0
- codeentropy-2.1.0/tests/regression/baselines/cyclohexane.json → codeentropy-2.2.0/tests/regression/baselines/cyclohexane/default.json +7 -7
- codeentropy-2.2.0/tests/regression/baselines/cyclohexane/frame_window.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/cyclohexane/grouping_each.json +153 -0
- codeentropy-2.1.0/tests/regression/baselines/cylcohexane_rad.json → codeentropy-2.2.0/tests/regression/baselines/cyclohexane/rad.json +12 -12
- codeentropy-2.2.0/tests/regression/baselines/cyclohexane/selection_subset.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/dna/axes_off.json +61 -0
- codeentropy-2.2.0/tests/regression/baselines/dna/combined_forcetorque_off.json +61 -0
- codeentropy-2.1.0/tests/regression/baselines/dna.json → codeentropy-2.2.0/tests/regression/baselines/dna/default.json +9 -9
- codeentropy-2.2.0/tests/regression/baselines/dna/frame_window.json +61 -0
- codeentropy-2.2.0/tests/regression/baselines/dna/grouping_each.json +61 -0
- codeentropy-2.2.0/tests/regression/baselines/dna/selection_subset.json +61 -0
- codeentropy-2.2.0/tests/regression/baselines/ethyl-acetate/axes_off.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/ethyl-acetate/combined_forcetorque_off.json +45 -0
- codeentropy-2.1.0/tests/regression/baselines/ethyl-acetate.json → codeentropy-2.2.0/tests/regression/baselines/ethyl-acetate/default.json +8 -8
- codeentropy-2.2.0/tests/regression/baselines/ethyl-acetate/frame_window.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/ethyl-acetate/grouping_each.json +153 -0
- codeentropy-2.1.0/tests/regression/baselines/ethyl-acetate_rad.json → codeentropy-2.2.0/tests/regression/baselines/ethyl-acetate/rad.json +12 -12
- codeentropy-2.2.0/tests/regression/baselines/ethyl-acetate/selection_subset.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/methane/axes_off.json +42 -0
- codeentropy-2.2.0/tests/regression/baselines/methane/combined_forcetorque_off.json +42 -0
- codeentropy-2.1.0/tests/regression/baselines/methane.json → codeentropy-2.2.0/tests/regression/baselines/methane/default.json +6 -6
- codeentropy-2.2.0/tests/regression/baselines/methane/frame_window.json +42 -0
- codeentropy-2.2.0/tests/regression/baselines/methane/grouping_each.json +123 -0
- codeentropy-2.1.0/tests/regression/baselines/methane_rad.json → codeentropy-2.2.0/tests/regression/baselines/methane/rad.json +9 -9
- codeentropy-2.2.0/tests/regression/baselines/methane/selection_subset.json +42 -0
- codeentropy-2.2.0/tests/regression/baselines/methanol/axes_off.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/methanol/combined_forcetorque_off.json +45 -0
- codeentropy-2.1.0/tests/regression/baselines/methanol.json → codeentropy-2.2.0/tests/regression/baselines/methanol/default.json +6 -6
- codeentropy-2.2.0/tests/regression/baselines/methanol/frame_window.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/methanol/grouping_each.json +153 -0
- codeentropy-2.1.0/tests/regression/baselines/methanol_rad.json → codeentropy-2.2.0/tests/regression/baselines/methanol/rad.json +10 -10
- codeentropy-2.2.0/tests/regression/baselines/methanol/selection_subset.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/octonol/axes_off.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/octonol/combined_forcetorque_off.json +45 -0
- codeentropy-2.1.0/tests/regression/baselines/octonol.json → codeentropy-2.2.0/tests/regression/baselines/octonol/default.json +8 -8
- codeentropy-2.2.0/tests/regression/baselines/octonol/frame_window.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/octonol/grouping_each.json +153 -0
- codeentropy-2.1.0/tests/regression/baselines/octonal_rad.json → codeentropy-2.2.0/tests/regression/baselines/octonol/rad.json +12 -12
- codeentropy-2.2.0/tests/regression/baselines/octonol/selection_subset.json +45 -0
- codeentropy-2.2.0/tests/regression/baselines/water/axes_off.json +42 -0
- codeentropy-2.2.0/tests/regression/baselines/water/combined_forcetorque_off.json +42 -0
- codeentropy-2.1.0/tests/regression/baselines/water.json → codeentropy-2.2.0/tests/regression/baselines/water/default.json +6 -6
- codeentropy-2.2.0/tests/regression/baselines/water/frame_window.json +42 -0
- codeentropy-2.2.0/tests/regression/baselines/water/grouping_each.json +123 -0
- codeentropy-2.1.0/tests/regression/baselines/water_rad.json → codeentropy-2.2.0/tests/regression/baselines/water/rad.json +6 -6
- codeentropy-2.2.0/tests/regression/baselines/water/selection_subset.json +42 -0
- codeentropy-2.2.0/tests/regression/baselines/water/water_off.json +42 -0
- codeentropy-2.2.0/tests/regression/cases.py +103 -0
- codeentropy-2.2.0/tests/regression/configs/benzaldehyde/axes_off.yaml +15 -0
- codeentropy-2.2.0/tests/regression/configs/benzaldehyde/combined_forcetorque_false.yaml +15 -0
- codeentropy-2.2.0/tests/regression/configs/benzaldehyde/frame_window.yaml +14 -0
- codeentropy-2.2.0/tests/regression/configs/benzaldehyde/grouping_each.yaml +15 -0
- codeentropy-2.1.0/tests/regression/configs/benzaldehyde_rad/config.yaml → codeentropy-2.2.0/tests/regression/configs/benzaldehyde/rad.yaml +1 -1
- codeentropy-2.2.0/tests/regression/configs/benzaldehyde/selection_subset.yaml +14 -0
- codeentropy-2.2.0/tests/regression/configs/benzene/axes_off.yaml +15 -0
- codeentropy-2.2.0/tests/regression/configs/benzene/combined_forcetorque_off.yaml +15 -0
- codeentropy-2.1.0/tests/regression/configs/benzene/config.yaml → codeentropy-2.2.0/tests/regression/configs/benzene/default.yaml +2 -2
- codeentropy-2.2.0/tests/regression/configs/benzene/frame_window.yaml +14 -0
- codeentropy-2.2.0/tests/regression/configs/benzene/grouping_each.yaml +15 -0
- codeentropy-2.1.0/tests/regression/configs/benzene_rad/config.yaml → codeentropy-2.2.0/tests/regression/configs/benzene/rad.yaml +3 -3
- codeentropy-2.2.0/tests/regression/configs/benzene/selection_subset.yaml +14 -0
- codeentropy-2.2.0/tests/regression/configs/cyclohexane/axes_off.yaml +15 -0
- codeentropy-2.2.0/tests/regression/configs/cyclohexane/combined_forcetorque_off.yaml +15 -0
- codeentropy-2.1.0/tests/regression/configs/cyclohexane/config.yaml → codeentropy-2.2.0/tests/regression/configs/cyclohexane/default.yaml +2 -2
- codeentropy-2.2.0/tests/regression/configs/cyclohexane/frame_window.yaml +14 -0
- codeentropy-2.2.0/tests/regression/configs/cyclohexane/grouping_each.yaml +15 -0
- codeentropy-2.1.0/tests/regression/configs/cyclohexane_rad/config.yaml → codeentropy-2.2.0/tests/regression/configs/cyclohexane/rad.yaml +3 -3
- codeentropy-2.2.0/tests/regression/configs/cyclohexane/selection_subset.yaml +14 -0
- codeentropy-2.2.0/tests/regression/configs/dna/axes_off.yaml +11 -0
- codeentropy-2.2.0/tests/regression/configs/dna/combined_forcetorque_off.yaml +11 -0
- codeentropy-2.1.0/tests/regression/configs/dna/config.yaml → codeentropy-2.2.0/tests/regression/configs/dna/default.yaml +1 -1
- codeentropy-2.2.0/tests/regression/configs/dna/frame_window.yaml +10 -0
- codeentropy-2.2.0/tests/regression/configs/dna/grouping_each.yaml +11 -0
- codeentropy-2.2.0/tests/regression/configs/dna/selection_subset.yaml +10 -0
- codeentropy-2.2.0/tests/regression/configs/ethyl-acetate/axes_off.yaml +15 -0
- codeentropy-2.2.0/tests/regression/configs/ethyl-acetate/combined_forcetorque_off.yaml +15 -0
- codeentropy-2.1.0/tests/regression/configs/ethyl-acetate/config.yaml → codeentropy-2.2.0/tests/regression/configs/ethyl-acetate/default.yaml +2 -2
- codeentropy-2.2.0/tests/regression/configs/ethyl-acetate/frame_window.yaml +14 -0
- codeentropy-2.2.0/tests/regression/configs/ethyl-acetate/grouping_each.yaml +15 -0
- codeentropy-2.1.0/tests/regression/configs/ethyl-acetate_rad/config.yaml → codeentropy-2.2.0/tests/regression/configs/ethyl-acetate/rad.yaml +3 -3
- codeentropy-2.2.0/tests/regression/configs/ethyl-acetate/selection_subset.yaml +14 -0
- codeentropy-2.2.0/tests/regression/configs/methane/axes_off.yaml +16 -0
- codeentropy-2.2.0/tests/regression/configs/methane/combined_forcetorque_off.yaml +16 -0
- codeentropy-2.2.0/tests/regression/configs/methane/frame_window.yaml +15 -0
- codeentropy-2.2.0/tests/regression/configs/methane/grouping_each.yaml +16 -0
- codeentropy-2.1.0/tests/regression/configs/methane_rad/config.yaml → codeentropy-2.2.0/tests/regression/configs/methane/rad.yaml +2 -1
- codeentropy-2.2.0/tests/regression/configs/methane/selection_subset.yaml +15 -0
- codeentropy-2.2.0/tests/regression/configs/methanol/axes_off.yaml +15 -0
- codeentropy-2.2.0/tests/regression/configs/methanol/combined_forcetorque_off.yaml +15 -0
- codeentropy-2.1.0/tests/regression/configs/methanol/config.yaml → codeentropy-2.2.0/tests/regression/configs/methanol/default.yaml +2 -2
- codeentropy-2.2.0/tests/regression/configs/methanol/frame_window.yaml +14 -0
- codeentropy-2.2.0/tests/regression/configs/methanol/grouping_each.yaml +15 -0
- codeentropy-2.1.0/tests/regression/configs/methanol_rad/config.yaml → codeentropy-2.2.0/tests/regression/configs/methanol/rad.yaml +3 -3
- codeentropy-2.2.0/tests/regression/configs/methanol/selection_subset.yaml +14 -0
- codeentropy-2.2.0/tests/regression/configs/octonol/axes_off.yaml +15 -0
- codeentropy-2.2.0/tests/regression/configs/octonol/combined_forcetorque_off.yaml +15 -0
- codeentropy-2.1.0/tests/regression/configs/octonol/config.yaml → codeentropy-2.2.0/tests/regression/configs/octonol/default.yaml +2 -2
- codeentropy-2.2.0/tests/regression/configs/octonol/frame_window.yaml +14 -0
- codeentropy-2.2.0/tests/regression/configs/octonol/grouping_each.yaml +15 -0
- codeentropy-2.1.0/tests/regression/configs/octonol_rad/config.yaml → codeentropy-2.2.0/tests/regression/configs/octonol/rad.yaml +3 -3
- codeentropy-2.2.0/tests/regression/configs/octonol/selection_subset.yaml +14 -0
- codeentropy-2.2.0/tests/regression/configs/water/axes_off.yaml +15 -0
- codeentropy-2.2.0/tests/regression/configs/water/combined_forcetorque_off.yaml +15 -0
- codeentropy-2.2.0/tests/regression/configs/water/frame_window.yaml +14 -0
- codeentropy-2.2.0/tests/regression/configs/water/grouping_each.yaml +15 -0
- codeentropy-2.2.0/tests/regression/configs/water/selection_subset.yaml +14 -0
- codeentropy-2.2.0/tests/regression/configs/water/water_off.yaml +15 -0
- codeentropy-2.2.0/tests/regression/conftest.py +90 -0
- codeentropy-2.2.0/tests/regression/list_systems.py +12 -0
- codeentropy-2.2.0/tests/regression/test_regression.py +187 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/entropy/test_workflow.py +19 -4
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/nodes/test_conformations_node.py +1 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/nodes/test_find_neighbors.py +1 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/test_dihedrals.py +169 -277
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/test_level_dag_orchestration.py +6 -44
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/test_level_dag_reduction.py +3 -3
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/test_mda_universe_operations.py +53 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/test_neighbors.py +8 -4
- codeentropy-2.2.0/tests/unit/CodeEntropy/levels/test_search.py +383 -0
- codeentropy-2.2.0/tests/unit/conftest.py +15 -0
- codeentropy-2.1.0/.github/workflows/weekly-regression.yaml +0 -51
- codeentropy-2.1.0/CodeEntropy/levels/search.py +0 -241
- codeentropy-2.1.0/tests/__init__.py +0 -4
- codeentropy-2.1.0/tests/pytest.ini +0 -10
- codeentropy-2.1.0/tests/regression/conftest.py +0 -46
- codeentropy-2.1.0/tests/regression/test_regression.py +0 -155
- codeentropy-2.1.0/tests/unit/CodeEntropy/levels/test_search.py +0 -277
- {codeentropy-2.1.0 → codeentropy-2.2.0}/.github/CONTRIBUTING.md +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/.github/ISSUE_TEMPLATE/documentation.md +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/.github/ISSUE_TEMPLATE/general_report.md +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/.github/renovate.json +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/.github/workflows/release.yaml +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/.github/workflows/update-copyright-years-in-license-file.yaml +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/.github/workflows/weekly-docs.yaml +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/.pre-commit-config.yaml +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CODE_OF_CONDUCT.md +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/__main__.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/cli.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/config/__init__.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/config/argparse.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/core/__init__.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/core/logging.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/entropy/__init__.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/entropy/configurational.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/entropy/graph.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/entropy/nodes/__init__.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/entropy/nodes/aggregate.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/entropy/orientational.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/entropy/vibrational.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/entropy/water.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/__init__.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/axes.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/forces.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/frame_dag.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/hierarchy.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/linalg.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/nodes/__init__.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/nodes/accumulators.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/nodes/beads.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/nodes/detect_levels.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/levels/nodes/detect_molecules.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/molecules/__init__.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/molecules/grouping.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/CodeEntropy/results/__init__.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/LICENSE +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/README.md +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/Makefile +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/README.md +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/_static/README.md +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/_static/custom.css +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/_static/logos/biosim-codeentropy_logo_dark.png +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/_static/logos/biosim-codeentropy_logo_light.png +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/_templates/README.md +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.cli.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.config.argparse.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.config.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.config.runtime.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.core.logging.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.core.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.entropy.configurational.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.entropy.graph.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.entropy.nodes.aggregate.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.entropy.nodes.configurational.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.entropy.nodes.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.entropy.nodes.vibrational.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.entropy.orientational.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.entropy.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.entropy.vibrational.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.entropy.water.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.entropy.workflow.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.levels.axes.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.levels.dihedrals.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.levels.forces.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.levels.frame_dag.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.levels.hierarchy.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.levels.level_dag.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.levels.linalg.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.levels.mda.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.levels.nodes.accumulators.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.levels.nodes.beads.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.levels.nodes.conformations.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.levels.nodes.covariance.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.levels.nodes.detect_levels.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.levels.nodes.detect_molecules.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.levels.nodes.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.levels.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.molecules.grouping.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.molecules.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.results.reporter.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.results.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/CodeEntropy.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/api/modules.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/conf.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/config.yaml +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/faq.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/getting_started.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/index.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/docs/science.rst +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/readthedocs.yml +0 -0
- /codeentropy-2.1.0/tests/regression/configs/benzaldehyde/config.yaml → /codeentropy-2.2.0/tests/regression/configs/benzaldehyde/default.yaml +0 -0
- /codeentropy-2.1.0/tests/regression/configs/methane/config.yaml → /codeentropy-2.2.0/tests/regression/configs/methane/default.yaml +0 -0
- /codeentropy-2.1.0/tests/regression/configs/water/config.yaml → /codeentropy-2.2.0/tests/regression/configs/water/default.yaml +0 -0
- /codeentropy-2.1.0/tests/regression/configs/water_rad/config.yaml → /codeentropy-2.2.0/tests/regression/configs/water/rad.yaml +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/regression/helpers.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/cli/test___main__.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/cli/test_cli.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/config/argparse/conftest.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/config/argparse/test_argparse_build_parser.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/config/argparse/test_argparse_load_config.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/config/argparse/test_argparse_resolve.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/config/argparse/test_argparse_str2bool.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/config/argparse/test_argparse_validate_inputs.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/config/runtime/conftest.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/config/runtime/test_build_universe_branches.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/config/runtime/test_citation_data.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/config/runtime/test_create_job_folder.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/config/runtime/test_print_args_table.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/config/runtime/test_required_args.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/config/runtime/test_run_entropy_workflow_branches.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/config/runtime/test_runtime_properties.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/config/runtime/test_show_splash.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/config/runtime/test_unit_conversions.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/config/runtime/test_universe_io.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/core/logging/conftest.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/core/logging/test_configure_loggers.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/core/logging/test_error_filter.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/core/logging/test_export_console.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/core/logging/test_get_console_singleton.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/core/logging/test_handlers_setup.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/core/logging/test_set_level.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/entropy/conftest.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/entropy/nodes/test_aggregate_node.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/entropy/nodes/test_configurational_node.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/entropy/nodes/test_orientational_node.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/entropy/nodes/test_vibrational_node.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/entropy/test_configurational_edges.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/entropy/test_configurational_entropy_math.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/entropy/test_graph.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/entropy/test_orientational_entropy.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/entropy/test_vibrational_entropy_math.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/entropy/test_water_entropy.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/conftest.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/nodes/test_build_beads_node.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/nodes/test_detect_levels_node.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/nodes/test_detect_molecules_node.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/nodes/test_frame_covariance_node.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/nodes/test_init_covariance_accumulators_node.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/test_axes.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/test_forces_force_torque_calculator.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/test_frame_graph.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/test_hierarchy_builder.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/test_level_dag_reduce.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/levels/test_linalg_matrix_utils.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/molecules/test_grouping.py +0 -0
- {codeentropy-2.1.0 → codeentropy-2.2.0}/tests/unit/CodeEntropy/results/test_reporter.py +0 -0
|
@@ -11,14 +11,16 @@ concurrency:
|
|
|
11
11
|
|
|
12
12
|
jobs:
|
|
13
13
|
unit:
|
|
14
|
-
name: Unit (${{ matrix.os }}, ${{ matrix.python-version }})
|
|
14
|
+
name: Unit (${{ matrix.os }}, py${{ matrix.python-version }})
|
|
15
15
|
runs-on: ${{ matrix.os }}
|
|
16
16
|
timeout-minutes: 30
|
|
17
|
+
|
|
17
18
|
strategy:
|
|
18
19
|
fail-fast: false
|
|
19
20
|
matrix:
|
|
20
21
|
os: [ubuntu-24.04, macos-15, windows-2025]
|
|
21
22
|
python-version: ["3.12", "3.13", "3.14"]
|
|
23
|
+
|
|
22
24
|
steps:
|
|
23
25
|
- name: Checkout
|
|
24
26
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
|
@@ -29,10 +31,10 @@ jobs:
|
|
|
29
31
|
python-version: ${{ matrix.python-version }}
|
|
30
32
|
cache: pip
|
|
31
33
|
|
|
32
|
-
- name: Install
|
|
34
|
+
- name: Install testing dependencies
|
|
33
35
|
run: |
|
|
34
36
|
python -m pip install --upgrade pip
|
|
35
37
|
python -m pip install -e .[testing]
|
|
36
38
|
|
|
37
|
-
- name:
|
|
39
|
+
- name: Run unit tests
|
|
38
40
|
run: python -m pytest tests/unit
|
|
@@ -17,12 +17,13 @@ jobs:
|
|
|
17
17
|
matrix:
|
|
18
18
|
os: [ubuntu-24.04, macos-15, windows-2025]
|
|
19
19
|
python-version: ["3.12", "3.13", "3.14"]
|
|
20
|
+
|
|
20
21
|
steps:
|
|
21
22
|
- name: Checkout
|
|
22
|
-
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
|
|
23
|
+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
|
|
23
24
|
|
|
24
25
|
- name: Set up Python ${{ matrix.python-version }}
|
|
25
|
-
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
|
|
26
|
+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
|
|
26
27
|
with:
|
|
27
28
|
python-version: ${{ matrix.python-version }}
|
|
28
29
|
cache: pip
|
|
@@ -35,17 +36,50 @@ jobs:
|
|
|
35
36
|
- name: Pytest (unit) • ${{ matrix.os }}, ${{ matrix.python-version }}
|
|
36
37
|
run: python -m pytest tests/unit
|
|
37
38
|
|
|
39
|
+
discover-systems:
|
|
40
|
+
name: Discover regression systems
|
|
41
|
+
runs-on: ubuntu-24.04
|
|
42
|
+
outputs:
|
|
43
|
+
systems: ${{ steps.set-systems.outputs.systems }}
|
|
44
|
+
|
|
45
|
+
steps:
|
|
46
|
+
- name: Checkout
|
|
47
|
+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
|
|
48
|
+
|
|
49
|
+
- name: Set up Python 3.14
|
|
50
|
+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
|
|
51
|
+
with:
|
|
52
|
+
python-version: "3.14"
|
|
53
|
+
cache: pip
|
|
54
|
+
|
|
55
|
+
- name: Install testing dependencies
|
|
56
|
+
run: |
|
|
57
|
+
python -m pip install --upgrade pip
|
|
58
|
+
python -m pip install -e .[testing]
|
|
59
|
+
|
|
60
|
+
- name: Discover systems
|
|
61
|
+
id: set-systems
|
|
62
|
+
run: |
|
|
63
|
+
SYSTEMS=$(python -m tests.regression.list_systems)
|
|
64
|
+
echo "systems=$SYSTEMS" >> $GITHUB_OUTPUT
|
|
65
|
+
|
|
38
66
|
regression-quick:
|
|
39
|
-
name: Regression (
|
|
40
|
-
needs: unit
|
|
67
|
+
name: Regression (fast) • ${{ matrix.system }}
|
|
68
|
+
needs: [unit, discover-systems]
|
|
41
69
|
runs-on: ubuntu-24.04
|
|
42
70
|
timeout-minutes: 35
|
|
71
|
+
|
|
72
|
+
strategy:
|
|
73
|
+
fail-fast: false
|
|
74
|
+
matrix:
|
|
75
|
+
system: ${{ fromJson(needs.discover-systems.outputs.systems) }}
|
|
76
|
+
|
|
43
77
|
steps:
|
|
44
78
|
- name: Checkout
|
|
45
|
-
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
|
|
79
|
+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
|
|
46
80
|
|
|
47
81
|
- name: Set up Python 3.14
|
|
48
|
-
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
|
|
82
|
+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
|
|
49
83
|
with:
|
|
50
84
|
python-version: "3.14"
|
|
51
85
|
cache: pip
|
|
@@ -54,28 +88,31 @@ jobs:
|
|
|
54
88
|
uses: actions/cache@v4
|
|
55
89
|
with:
|
|
56
90
|
path: .testdata
|
|
57
|
-
key: codeentropy-testdata
|
|
91
|
+
key: codeentropy-testdata-${{ runner.os }}-py314
|
|
58
92
|
|
|
59
|
-
- name: Install
|
|
93
|
+
- name: Install testing dependencies
|
|
60
94
|
run: |
|
|
61
95
|
python -m pip install --upgrade pip
|
|
62
96
|
python -m pip install -e .[testing]
|
|
63
97
|
|
|
64
|
-
- name:
|
|
65
|
-
run:
|
|
98
|
+
- name: Run fast regression tests (per system)
|
|
99
|
+
run: |
|
|
100
|
+
python -m pytest tests/regression \
|
|
101
|
+
-m "not slow" \
|
|
102
|
+
-n auto \
|
|
103
|
+
--dist=loadscope \
|
|
104
|
+
-k "${{ matrix.system }}" \
|
|
105
|
+
-vv \
|
|
106
|
+
--durations=20
|
|
66
107
|
|
|
67
108
|
- name: Upload artifacts (failure)
|
|
68
109
|
if: failure()
|
|
69
110
|
uses: actions/upload-artifact@v4
|
|
70
111
|
with:
|
|
71
|
-
name: quick-regression-failure
|
|
112
|
+
name: quick-regression-failure-${{ matrix.system }}
|
|
72
113
|
path: |
|
|
73
114
|
.testdata/**
|
|
74
|
-
|
|
75
|
-
/tmp/pytest-of-*/pytest-*/**/config.yaml
|
|
76
|
-
/tmp/pytest-of-*/pytest-*/**/codeentropy_stdout.txt
|
|
77
|
-
/tmp/pytest-of-*/pytest-*/**/codeentropy_stderr.txt
|
|
78
|
-
/tmp/pytest-of-*/pytest-*/**/codeentropy_output.json
|
|
115
|
+
/tmp/pytest-of-*/pytest-*/**
|
|
79
116
|
|
|
80
117
|
docs:
|
|
81
118
|
name: Docs
|
|
@@ -93,7 +130,7 @@ jobs:
|
|
|
93
130
|
python-version: "3.14"
|
|
94
131
|
cache: pip
|
|
95
132
|
|
|
96
|
-
- name: Install
|
|
133
|
+
- name: Install docs dependencies
|
|
97
134
|
run: |
|
|
98
135
|
python -m pip install --upgrade pip
|
|
99
136
|
python -m pip install -e .[docs]
|
|
@@ -114,23 +151,23 @@ jobs:
|
|
|
114
151
|
name: Pre-commit
|
|
115
152
|
runs-on: ubuntu-24.04
|
|
116
153
|
timeout-minutes: 15
|
|
154
|
+
|
|
117
155
|
steps:
|
|
118
156
|
- name: Checkout
|
|
119
|
-
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
|
|
157
|
+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
|
|
120
158
|
|
|
121
159
|
- name: Set up Python 3.14
|
|
122
|
-
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
|
|
160
|
+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
|
|
123
161
|
with:
|
|
124
162
|
python-version: "3.14"
|
|
125
163
|
cache: pip
|
|
126
164
|
|
|
127
|
-
- name: Install
|
|
165
|
+
- name: Install pre-commit dependencies
|
|
128
166
|
run: |
|
|
129
167
|
python -m pip install --upgrade pip
|
|
130
168
|
python -m pip install -e .[pre-commit]
|
|
131
169
|
|
|
132
170
|
- name: Run pre-commit
|
|
133
|
-
shell: bash
|
|
134
171
|
run: |
|
|
135
172
|
pre-commit install
|
|
136
173
|
pre-commit run --all-files || {
|
|
@@ -144,8 +181,9 @@ jobs:
|
|
|
144
181
|
needs: unit
|
|
145
182
|
runs-on: ubuntu-24.04
|
|
146
183
|
timeout-minutes: 30
|
|
184
|
+
|
|
147
185
|
steps:
|
|
148
|
-
- name: Checkout
|
|
186
|
+
- name: Checkout
|
|
149
187
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
|
|
150
188
|
|
|
151
189
|
- name: Set up Python 3.14
|
|
@@ -154,12 +192,12 @@ jobs:
|
|
|
154
192
|
python-version: "3.14"
|
|
155
193
|
cache: pip
|
|
156
194
|
|
|
157
|
-
- name: Install
|
|
195
|
+
- name: Install testing dependencies
|
|
158
196
|
run: |
|
|
159
197
|
python -m pip install --upgrade pip
|
|
160
198
|
python -m pip install -e .[testing]
|
|
161
199
|
|
|
162
|
-
- name: Run
|
|
200
|
+
- name: Run coverage
|
|
163
201
|
run: |
|
|
164
202
|
pytest tests/unit \
|
|
165
203
|
--cov CodeEntropy \
|
|
@@ -167,7 +205,7 @@ jobs:
|
|
|
167
205
|
--cov-report xml \
|
|
168
206
|
-q
|
|
169
207
|
|
|
170
|
-
- name: Upload to Coveralls
|
|
208
|
+
- name: Upload coverage to Coveralls
|
|
171
209
|
uses: coverallsapp/github-action@5cbfd81b66ca5d10c19b062c04de0199c215fb6e
|
|
172
210
|
with:
|
|
173
211
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
name: Update Regression Baselines
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
concurrency:
|
|
7
|
+
group: update-regression-baselines-${{ github.ref }}
|
|
8
|
+
cancel-in-progress: true
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: write
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
update-baselines:
|
|
15
|
+
name: Update regression baselines
|
|
16
|
+
runs-on: ubuntu-24.04
|
|
17
|
+
timeout-minutes: 30
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- name: Checkout
|
|
21
|
+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
|
22
|
+
with:
|
|
23
|
+
ref: ${{ github.ref }}
|
|
24
|
+
|
|
25
|
+
- name: Set up Python
|
|
26
|
+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
27
|
+
with:
|
|
28
|
+
python-version: "3.14"
|
|
29
|
+
cache: pip
|
|
30
|
+
|
|
31
|
+
- name: Install testing dependencies
|
|
32
|
+
run: |
|
|
33
|
+
python -m pip install --upgrade pip
|
|
34
|
+
python -m pip install -e .[testing]
|
|
35
|
+
|
|
36
|
+
- name: Update regression baselines
|
|
37
|
+
run: pytest tests/regression --update-baselines
|
|
38
|
+
|
|
39
|
+
- name: Commit updated baselines
|
|
40
|
+
uses: stefanzweifel/git-auto-commit-action@778341af668090896ca464160c2def5d1d1a3eb0 # v6
|
|
41
|
+
with:
|
|
42
|
+
commit_message: "test(regression): update baselines"
|
|
43
|
+
commit_user_name: github-actions[bot]
|
|
44
|
+
commit_user_email: 41898282+github-actions[bot]@users.noreply.github.com
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
name: Weekly Regression Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: '0 8 * * 1'
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
concurrency:
|
|
9
|
+
group: weekly-regression-${{ github.ref }}
|
|
10
|
+
cancel-in-progress: true
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
discover:
|
|
14
|
+
name: Discover regression systems
|
|
15
|
+
runs-on: ubuntu-24.04
|
|
16
|
+
|
|
17
|
+
outputs:
|
|
18
|
+
systems: ${{ steps.set.outputs.systems }}
|
|
19
|
+
|
|
20
|
+
steps:
|
|
21
|
+
- name: Checkout
|
|
22
|
+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
|
|
23
|
+
|
|
24
|
+
- name: Set up Python 3.14
|
|
25
|
+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
|
|
26
|
+
with:
|
|
27
|
+
python-version: "3.14"
|
|
28
|
+
cache: pip
|
|
29
|
+
|
|
30
|
+
- name: Install testing dependencies
|
|
31
|
+
run: |
|
|
32
|
+
python -m pip install --upgrade pip
|
|
33
|
+
python -m pip install -e .[testing]
|
|
34
|
+
|
|
35
|
+
- name: Generate system matrix
|
|
36
|
+
id: set
|
|
37
|
+
run: |
|
|
38
|
+
systems=$(python -m tests.regression.list_systems)
|
|
39
|
+
echo "systems=$systems" >> $GITHUB_OUTPUT
|
|
40
|
+
|
|
41
|
+
regression:
|
|
42
|
+
name: Regression (${{ matrix.system }})
|
|
43
|
+
needs: discover
|
|
44
|
+
runs-on: ubuntu-24.04
|
|
45
|
+
timeout-minutes: 360
|
|
46
|
+
|
|
47
|
+
strategy:
|
|
48
|
+
fail-fast: false
|
|
49
|
+
matrix:
|
|
50
|
+
system: ${{ fromJson(needs.discover.outputs.systems) }}
|
|
51
|
+
|
|
52
|
+
steps:
|
|
53
|
+
- name: Checkout
|
|
54
|
+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
|
|
55
|
+
|
|
56
|
+
- name: Set up Python 3.14
|
|
57
|
+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
|
|
58
|
+
with:
|
|
59
|
+
python-version: "3.14"
|
|
60
|
+
cache: pip
|
|
61
|
+
|
|
62
|
+
- name: Cache regression test data
|
|
63
|
+
uses: actions/cache@v4
|
|
64
|
+
with:
|
|
65
|
+
path: .testdata
|
|
66
|
+
key: codeentropy-testdata-${{ runner.os }}-py314
|
|
67
|
+
|
|
68
|
+
- name: Install testing dependencies
|
|
69
|
+
run: |
|
|
70
|
+
python -m pip install --upgrade pip
|
|
71
|
+
python -m pip install -e .[testing]
|
|
72
|
+
|
|
73
|
+
- name: Run regression tests (slow, per system)
|
|
74
|
+
run: |
|
|
75
|
+
pytest tests/regression \
|
|
76
|
+
-k "${{ matrix.system }}" \
|
|
77
|
+
--run-slow \
|
|
78
|
+
-n auto \
|
|
79
|
+
--dist=loadscope \
|
|
80
|
+
-vv \
|
|
81
|
+
--durations=20
|
|
82
|
+
|
|
83
|
+
- name: Upload regression artifacts (failure)
|
|
84
|
+
if: failure()
|
|
85
|
+
uses: actions/upload-artifact@v4
|
|
86
|
+
with:
|
|
87
|
+
name: regression-${{ matrix.system }}-artifacts
|
|
88
|
+
path: |
|
|
89
|
+
.testdata/**
|
|
90
|
+
/tmp/pytest-of-*/pytest-*/**
|
|
@@ -335,8 +335,14 @@ class CodeEntropyRunner:
|
|
|
335
335
|
kcal_units = args.kcal_force_units
|
|
336
336
|
|
|
337
337
|
if forcefile is None:
|
|
338
|
-
|
|
339
|
-
|
|
338
|
+
if fileformat == "LAMMPSDUMP":
|
|
339
|
+
logger.debug(
|
|
340
|
+
f"Loading Universe with {tprfile} and {trrfile} (LAMMPSDUMP)"
|
|
341
|
+
)
|
|
342
|
+
return universe_operations.convert_lammps(tprfile, trrfile, fileformat)
|
|
343
|
+
else:
|
|
344
|
+
logger.debug(f"Loading Universe with {tprfile} and {trrfile}")
|
|
345
|
+
return mda.Universe(tprfile, trrfile, format=fileformat)
|
|
340
346
|
|
|
341
347
|
return universe_operations.merge_forces(
|
|
342
348
|
tprfile, trrfile, forcefile, fileformat, kcal_units
|
|
@@ -53,7 +53,7 @@ class ConfigurationalEntropyNode:
|
|
|
53
53
|
fragments = universe.atoms.fragments
|
|
54
54
|
results: dict[int, dict[str, float]] = {}
|
|
55
55
|
|
|
56
|
-
for group_id, mol_ids in groups.items():
|
|
56
|
+
for group_id, mol_ids in sorted(groups.items()):
|
|
57
57
|
results[group_id] = {"ua": 0.0, "res": 0.0, "poly": 0.0}
|
|
58
58
|
if not mol_ids:
|
|
59
59
|
continue
|
|
@@ -90,7 +90,7 @@ class VibrationalEntropyNode:
|
|
|
90
90
|
|
|
91
91
|
results: dict[int, dict[str, dict[str, float]]] = {}
|
|
92
92
|
|
|
93
|
-
for group_id, mol_ids in groups.items():
|
|
93
|
+
for group_id, mol_ids in sorted(groups.items()):
|
|
94
94
|
results[group_id] = {}
|
|
95
95
|
if not mol_ids:
|
|
96
96
|
continue
|
|
@@ -198,7 +198,7 @@ class VibrationalEntropyNode:
|
|
|
198
198
|
if isinstance(gid2i, dict) and gid2i:
|
|
199
199
|
return gid2i
|
|
200
200
|
groups = shared_data["groups"]
|
|
201
|
-
return {gid: i for i, gid in enumerate(groups.keys())}
|
|
201
|
+
return {gid: i for i, gid in enumerate(sorted(groups.keys()))}
|
|
202
202
|
|
|
203
203
|
def _get_ua_frame_counts(self, shared_data: Mapping[str, Any]) -> dict[CovKey, int]:
|
|
204
204
|
"""Extract per-(group,residue) frame counts for united-atom covariances.
|
|
@@ -96,7 +96,7 @@ class EntropyWorkflow:
|
|
|
96
96
|
|
|
97
97
|
This orchestrates the complete entropy pipeline:
|
|
98
98
|
1. Build trajectory slice.
|
|
99
|
-
2. Apply atom selection to create a reduced universe.
|
|
99
|
+
2. Apply atom and frame selection to create a reduced universe.
|
|
100
100
|
3. Detect hierarchy levels.
|
|
101
101
|
4. Group molecules.
|
|
102
102
|
5. Split groups into water and non-water.
|
|
@@ -233,21 +233,31 @@ class EntropyWorkflow:
|
|
|
233
233
|
return math.floor((end - start) / step)
|
|
234
234
|
|
|
235
235
|
def _build_reduced_universe(self) -> Any:
|
|
236
|
-
"""Apply atom selection and return the reduced universe.
|
|
237
|
-
|
|
238
|
-
If `selection_string` is "all", the original universe is returned.
|
|
236
|
+
"""Apply atom and frame selection and return the reduced universe.
|
|
239
237
|
|
|
240
238
|
Returns:
|
|
241
|
-
MDAnalysis Universe (
|
|
239
|
+
MDAnalysis Universe (reduced according to user selections).
|
|
242
240
|
"""
|
|
243
241
|
selection = self._args.selection_string
|
|
242
|
+
start = self._args.start
|
|
243
|
+
end = len(self._universe.trajectory) if self._args.end == -1 else self._args.end
|
|
244
|
+
step = self._args.step
|
|
244
245
|
if selection == "all":
|
|
245
|
-
|
|
246
|
+
reduced_atoms = self._universe
|
|
247
|
+
else:
|
|
248
|
+
reduced_atoms = self._universe_operations.select_atoms(
|
|
249
|
+
self._universe, selection
|
|
250
|
+
)
|
|
251
|
+
name = f"{len(reduced_atoms.trajectory)}_frame_dump_atom_selection"
|
|
252
|
+
self._run_manager.write_universe(reduced_atoms, name)
|
|
253
|
+
|
|
254
|
+
reduced_frames = self._universe_operations.select_frames(
|
|
255
|
+
reduced_atoms, start, end, step
|
|
256
|
+
)
|
|
257
|
+
name = f"{len(reduced_frames.trajectory)}_frame_dump_frame_selection"
|
|
258
|
+
self._run_manager.write_universe(reduced_frames, name)
|
|
246
259
|
|
|
247
|
-
|
|
248
|
-
name = f"{len(reduced.trajectory)}_frame_dump_atom_selection"
|
|
249
|
-
self._run_manager.write_universe(reduced, name)
|
|
250
|
-
return reduced
|
|
260
|
+
return reduced_frames
|
|
251
261
|
|
|
252
262
|
def _detect_levels(self, reduced_universe: Any) -> Any:
|
|
253
263
|
"""Detect hierarchy levels for each molecule in the reduced universe.
|
|
@@ -293,7 +303,7 @@ class EntropyWorkflow:
|
|
|
293
303
|
|
|
294
304
|
water_groups = {
|
|
295
305
|
gid: mol_ids
|
|
296
|
-
for gid, mol_ids in groups.items()
|
|
306
|
+
for gid, mol_ids in sorted(groups.items())
|
|
297
307
|
if any(
|
|
298
308
|
res.resid in water_resids
|
|
299
309
|
for mol in [universe.atoms.fragments[i] for i in mol_ids]
|
|
@@ -301,7 +311,7 @@ class EntropyWorkflow:
|
|
|
301
311
|
)
|
|
302
312
|
}
|
|
303
313
|
nonwater_groups = {
|
|
304
|
-
gid: g for gid, g in groups.items() if gid not in water_groups
|
|
314
|
+
gid: g for gid, g in sorted(groups.items()) if gid not in water_groups
|
|
305
315
|
}
|
|
306
316
|
return nonwater_groups, water_groups
|
|
307
317
|
|
|
@@ -354,7 +364,7 @@ class EntropyWorkflow:
|
|
|
354
364
|
except (TypeError, ValueError):
|
|
355
365
|
logger.warning("Skipping invalid entry: %s, %s", group_id, result)
|
|
356
366
|
|
|
357
|
-
for group_id, total in entropy_by_group.items():
|
|
367
|
+
for group_id, total in sorted(entropy_by_group.items()):
|
|
358
368
|
self._reporter.molecule_data.append(
|
|
359
369
|
(group_id, "Group Total", "Group Total Entropy", total)
|
|
360
370
|
)
|