The previous commit's 360-degree phase assignment gave the low and high halves the SAME phase per pair (1,2)/(3,4)/(5,6)/(7,8), so each pair concatenated into one continuous evenly-spaced range -- but that means every low-half angle is exactly 180deg from a high-half angle, which is exactly the redundant-measurement bug this was supposed to fix, just reintroduced between subtomos instead of within one. Corrected: the low half (subtomos 1,4,5,8) now uses the even eighths of the original 8-way phase_eighths table, and the high half (2,3,6,7) uses the odd eighths -- complementary, not shared. Folded mod 180, the two halves interleave into exactly the same 8-way, step/8 grid that 180-mode itself produces: every position is measured exactly once, using its full 0-360 physical range, with zero redundant measurements anywhere. Total projection count is unchanged (still identical to 180 mode for a given tomo_angle_stepsize). Verified: pure-math unit tests confirm the 360-mode combined set, folded mod 180, is an exact set match (same count, no repeated residue) against 180-mode's own set. Live-verified against the running flomni sim: real motor motion for both modes, folding the observed 360-mode angles mod 180 exactly reproduces the observed 180-mode angles. Also updated the two "angular step of the final combined tomogram" CLI/parameter-wizard print statements to additionally report the effective mod-180 reconstruction resolution for 360 mode, since it's now finer than the raw per-half spacing they already printed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Getting Started with Testing using pytest
BEC is using the pytest framework. It can be installed via
pip install pytest
in your python environment.
We note that pytest is part of the optional-dependencies [dev] of the plugin package.
Introduction
Tests in this package should be stored in the tests directory.
We suggest to sort tests of different submodules, i.e. scans or devices in the respective folder structure, and to folow a naming convention of <test_module_name.py>.
It is mandatory for test files to begin with test_ for pytest to discover them.
To run all tests, navigate to the directory of the plugin from the command line, and run the command
pytest -v --random-order ./tests
Note, the python environment needs to be active.
The additional arg -v allows pytest to run in verbose mode which provides more detailed information about the tests being run.
The argument --random-order instructs pytest to run the tests in random order, which is the default in the CI pipelines.
Test examples
Writing tests can be quite specific for the given function. We recommend writing tests as isolated as possible, i.e. try to test single functions instead of full classes. A very useful class to enable isolated testing is MagicMock. In addition, we also recommend to take a look at the How-to guides from pytest.