Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
9a9977e
ci(workflows): add `env` variables to ensure GitHub Actions runs are …
harryswift01 Apr 8, 2026
59bdeb5
fix(dag): ensure deterministic group indexing and remove shared mutab…
harryswift01 Apr 8, 2026
81c93e4
fix: enforce deterministic ordering when iterating over groups
harryswift01 Apr 8, 2026
bf3fa54
ci(workflows): remove parallel execution on PR runs
harryswift01 Apr 8, 2026
efcf718
fix: ensure correct ordering within the results
harryswift01 Apr 8, 2026
1aab0c8
ci: remove dist loadscope from workflow testing
harryswift01 Apr 8, 2026
624fe53
ci(workflows): move pre-commit check after to run after unit tests
harryswift01 Apr 9, 2026
313f038
ci(workflows): include parallel execution for `.github/workflows/pr.y…
harryswift01 Apr 9, 2026
03c2d0d
ci(workflows): rearange order of PR regression test command
harryswift01 Apr 9, 2026
63f73b4
ci(workflows): update `.github.worklows/pr.yaml` to use single proces…
harryswift01 Apr 9, 2026
be1c06e
Merge remote-tracking branch 'origin/main' into 313-bug-regression-te…
harryswift01 Apr 9, 2026
d92c98e
ci(workflows): update `.github/weekly-regression.yaml` to run in serial
harryswift01 Apr 9, 2026
a9a3a86
fix(results): ensure deterministic iteration over groups in reporter
harryswift01 Apr 9, 2026
183cd9e
refactor(levels): replace incremental mean with deterministic sum/cou…
harryswift01 Apr 9, 2026
8e471ba
docs: ensure docstrings adhear to Google style methods
harryswift01 Apr 9, 2026
2d4793a
ci(workflows): udpate quick regression command within PR workflow
harryswift01 Apr 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion .github/workflows/daily.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@ concurrency:
group: daily-${{ github.ref }}
cancel-in-progress: true

env:
OMP_NUM_THREADS: 1
MKL_NUM_THREADS: 1
OPENBLAS_NUM_THREADS: 1
NUMEXPR_NUM_THREADS: 1
PYTHONHASHSEED: 0

jobs:
unit:
name: Unit (${{ matrix.os }}, py${{ matrix.python-version }})
Expand Down Expand Up @@ -37,4 +44,4 @@ jobs:
python -m pip install -e .[testing]

- name: Run unit tests
run: python -m pytest tests/unit
run: python -m pytest tests/unit -n auto --dist=loadscope
32 changes: 21 additions & 11 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,19 @@ concurrency:
group: pr-${{ github.ref }}
cancel-in-progress: true

env:
OMP_NUM_THREADS: 1
MKL_NUM_THREADS: 1
OPENBLAS_NUM_THREADS: 1
NUMEXPR_NUM_THREADS: 1
PYTHONHASHSEED: 0

jobs:
unit:
name: Unit
runs-on: ${{ matrix.os }}
timeout-minutes: 25

strategy:
fail-fast: false
matrix:
Expand All @@ -33,8 +41,10 @@ jobs:
python -m pip install --upgrade pip
python -m pip install -e .[testing]

- name: Pytest (unit) • ${{ matrix.os }}, ${{ matrix.python-version }}
run: python -m pytest tests/unit
- name: Run unit tests
run: |
python -m pytest tests/unit -n auto --dist=loadscope


discover-systems:
name: Discover regression systems
Expand Down Expand Up @@ -63,6 +73,7 @@ jobs:
SYSTEMS=$(python -m tests.regression.list_systems)
echo "systems=$SYSTEMS" >> $GITHUB_OUTPUT


regression-quick:
name: Regression (fast) • ${{ matrix.system }}
needs: [unit, discover-systems]
Expand All @@ -84,23 +95,16 @@ jobs:
python-version: "3.14"
cache: pip

- name: Cache testdata
uses: actions/cache@v4
with:
path: .testdata
key: codeentropy-testdata-${{ runner.os }}-py314

- name: Install testing dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -e .[testing]

- name: Run fast regression tests (per system)
- name: Run fast regression tests
run: |
python -m pytest tests/regression \
-m "not slow" \
-n auto \
--dist=loadscope \
-n 0 \
-k "${{ matrix.system }}" \
-vv \
--durations=20
Expand All @@ -114,6 +118,7 @@ jobs:
.testdata/**
/tmp/pytest-of-*/pytest-*/**


docs:
name: Docs
needs: unit
Expand Down Expand Up @@ -147,8 +152,10 @@ jobs:
name: docs-html
path: docs/_build/html


pre-commit:
name: Pre-commit
needs: unit
runs-on: ubuntu-24.04
timeout-minutes: 15

Expand Down Expand Up @@ -176,6 +183,7 @@ jobs:
exit 1
}


coverage:
name: Coverage
needs: unit
Expand Down Expand Up @@ -203,6 +211,8 @@ jobs:
--cov CodeEntropy \
--cov-report term-missing \
--cov-report xml \
-n auto \
--dist=loadscope \
-q

- name: Upload coverage to Coveralls
Expand Down
9 changes: 8 additions & 1 deletion .github/workflows/weekly-regression.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@ concurrency:
group: weekly-regression-${{ github.ref }}
cancel-in-progress: true

env:
OMP_NUM_THREADS: 1
MKL_NUM_THREADS: 1
OPENBLAS_NUM_THREADS: 1
NUMEXPR_NUM_THREADS: 1
PYTHONHASHSEED: 0

jobs:
discover:
name: Discover regression systems
Expand Down Expand Up @@ -75,7 +82,7 @@ jobs:
pytest tests/regression \
-k "${{ matrix.system }}" \
--run-slow \
-n auto \
-n 1 \
--dist=loadscope \
-vv \
--durations=20
Expand Down
4 changes: 2 additions & 2 deletions CodeEntropy/entropy/workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ def _build_shared_data(
"universe": self._universe,
"reduced_universe": reduced_universe,
"levels": levels,
"groups": dict(groups),
"groups": dict(sorted(groups.items())),
"start": traj.start,
"end": traj.end,
"step": traj.step,
Expand Down Expand Up @@ -319,7 +319,7 @@ def _compute_water_entropy(

water_entropy = WaterEntropy(self._args, self._reporter)

for group_id in water_groups.keys():
for group_id in sorted(water_groups.keys()):
water_entropy.calculate_and_log(
universe=self._universe,
start=traj.start,
Expand Down
2 changes: 1 addition & 1 deletion CodeEntropy/levels/dihedrals.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ def build_conformational_states(
progress.advance(task)
return states_ua, states_res

for group_id in groups.keys():
for group_id in sorted(groups.keys()):
molecules = groups[group_id]
if not molecules:
if progress is not None and task is not None:
Expand Down
Loading