Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
184 commits
Select commit Hold shift + click to select a range
adb02d0
Remove Numpy 1 limitation
garrettwrong Oct 9, 2024
c60d8f2
latest np2, Inf to inf
garrettwrong Oct 9, 2024
23b88c3
row_stack to vstack
garrettwrong Oct 9, 2024
6235411
np2 copy False -> None
garrettwrong Oct 9, 2024
eecb8d1
np2 breaks np.sign for complex
garrettwrong Oct 9, 2024
6ecda62
np2 multiply xform dtype cast
garrettwrong Oct 9, 2024
f23d36e
sk pca copy False
garrettwrong Oct 9, 2024
ebaeb04
sk pca copy False
garrettwrong Oct 9, 2024
d9ccdef
another great np2 improvement
garrettwrong Oct 9, 2024
e975604
sqrt(weight) dtype not same as weight
garrettwrong Oct 9, 2024
7fe6b87
looks like np2 impacted mrcfile as well
garrettwrong Oct 9, 2024
202f76f
Tox wants explicit stack level
garrettwrong Oct 21, 2024
7bcfd1c
missing space in warning message
garrettwrong Oct 22, 2024
f36f51b
misc cleanup, reducing pr delta from draft work
garrettwrong Oct 22, 2024
d24bca9
Remove sklearn workaround
j-c-c Nov 19, 2024
71b3002
Min version for sklearn.
j-c-c Nov 19, 2024
74ce51b
Convert gallery logging to print;
j-c-c Nov 18, 2024
e341699
typo
j-c-c Nov 18, 2024
d830a3d
tox.ini and formatting
j-c-c Nov 18, 2024
bf2348e
revert experiment prints back to logging
garrettwrong Nov 19, 2024
24c150d
remove redundant ignores
j-c-c Nov 19, 2024
6c59064
remove conflicting ignores
j-c-c Nov 19, 2024
05dccc6
Remove m_reshape from ffb2d.
j-c-c Oct 16, 2024
ea7c114
remove m_funcs from fb2d evaluate_t
j-c-c Oct 18, 2024
89ae284
remove m_funcs imports from fb2d
j-c-c Oct 18, 2024
25fc5bb
remove m_reshape from covar2d.py
j-c-c Oct 21, 2024
ac25c3c
remove temp test variable
j-c-c Oct 21, 2024
30fabb8
remove m_reshape from fb_3d
j-c-c Oct 25, 2024
6aa36a0
Reorder pf in ffb_2d to favor speed over images
j-c-c Oct 28, 2024
0eede17
fix shapes in FB_3D
j-c-c Oct 29, 2024
9a8fcb3
remove unnecesary m_reshapes
j-c-c Oct 31, 2024
28eb9fb
Refactor FFBBasis3D evaluate_t to remove m_reshape and speed up.
j-c-c Nov 7, 2024
581497e
missing xp array
j-c-c Nov 7, 2024
7325ebb
xp.contiguousarray
j-c-c Nov 7, 2024
72f0675
Remove m_funcs from ffb_3d.evaluate.
j-c-c Nov 11, 2024
1c89ff8
remove m_funcs from fourier_pts
j-c-c Nov 11, 2024
fd7ba2a
remove im_to_vec vec_to_im
j-c-c Nov 11, 2024
e1894d5
remove m_reshape from reconstruction/kernel
j-c-c Nov 12, 2024
7cca427
remove vec_to_mat from qr_vols_forward.
j-c-c Nov 12, 2024
5803485
remove vec_to_vol and vol_to_vec
j-c-c Nov 12, 2024
a928c35
No need to keep track of stack_shape.
j-c-c Nov 14, 2024
8f2b459
reshape on gpu
j-c-c Nov 14, 2024
e01619f
Bring stack_shape back for FB_3D _evaluate(_t). Used in Cov3D. Also f…
j-c-c Nov 14, 2024
e2b6039
blank line
j-c-c Nov 14, 2024
fcc0327
remove redundant reshape
j-c-c Nov 20, 2024
77b76ba
Initial grid cache implementation
garrettwrong Nov 4, 2024
88a53d5
add cache config section
garrettwrong Nov 6, 2024
5cc8682
add another evaluate_grid cache call
garrettwrong Nov 6, 2024
4f0071a
limit filter cache, qa B019
garrettwrong Nov 6, 2024
f04a7be
rm vecmat, volmat
garrettwrong Nov 14, 2024
4ae9ae6
remove m_ from cov3d
garrettwrong Nov 20, 2024
a5db7ff
resolve volume conflict
garrettwrong Nov 21, 2024
3900576
resolve cov3d mdim regression/conflicts
garrettwrong Nov 21, 2024
f08b8db
cleanup the fb ffb 2d shapes a little more.
garrettwrong Nov 21, 2024
f173ee1
purge roll_dim, unroll_dim
garrettwrong Nov 21, 2024
4bc0d5b
purge vecmat volmat
garrettwrong Nov 21, 2024
2714f40
purge m_reshape
garrettwrong Nov 21, 2024
a8c61c9
remove flat applications of rand
garrettwrong Nov 21, 2024
0a22e34
resolve rebase conflicts
garrettwrong Nov 21, 2024
ef98e4c
resolve future tuple syntax with Python 3.9
garrettwrong Nov 26, 2024
afb965e
cleanup cov3d sim eigs trans
garrettwrong Dec 9, 2024
080ecdb
rename legacy `rand` to `matlab_rand`
garrettwrong Dec 10, 2024
626237d
Add mrcs extension to ext list for Image.load
garrettwrong Dec 12, 2024
b8f84e2
Update sph_harm tests for scipy 1.15.0
garrettwrong Jan 7, 2025
e39f813
Fix future deprecation of sph_harm
garrettwrong Jan 7, 2025
43f8a3a
make unit test compatible with old and new scipy
garrettwrong Jan 7, 2025
266e71d
Add new default and legacy class averager wrappers
garrettwrong Nov 26, 2024
498bc1a
change 10028 and 10081 to use legacy class avg align
garrettwrong Nov 27, 2024
59ddef1
use default overwrite in exps
garrettwrong Nov 27, 2024
edf3ada
add GlobalVarianceClassSelector and update docs for Legacy
garrettwrong Dec 2, 2024
7c47d68
address numpy >0d scalar assignment deprecation
garrettwrong Dec 2, 2024
a1d7318
self review string and default updates
garrettwrong Jan 2, 2025
a29670b
cover both v110 and v132 class average defaults
garrettwrong Jan 2, 2025
e969ca3
Correct CTFFilter formula/units
garrettwrong Jan 7, 2025
a94bf0d
Add a hard coded CTFFilter reference from MATLAB
garrettwrong Jan 7, 2025
16d644b
stash add batch ca
garrettwrong Dec 3, 2024
d83d061
stash add, repro reals ref
garrettwrong Dec 5, 2024
3cd8698
move some of the conjugation outside of loop
garrettwrong Dec 5, 2024
f95ee65
Fix complex conversion dot products
garrettwrong Dec 9, 2024
eed952a
implement BFR with more optimal linalg
garrettwrong Dec 9, 2024
b33e475
fixup CuPy wrapping of BFR
garrettwrong Dec 10, 2024
84a0cad
stuff batched BFR into BFSR
garrettwrong Dec 11, 2024
ef56c69
invert BFR BFSR relationship
garrettwrong Dec 12, 2024
1520d42
fixing pbars
garrettwrong Dec 13, 2024
92bcd94
remove temp BFR only work
garrettwrong Jan 2, 2025
a449e82
minor cleanup
garrettwrong Jan 2, 2025
e56f412
change n_transl comments to n_rot
garrettwrong Jan 16, 2025
e198ef5
change correlations ~~> dot_products in code and related strings/docs…
garrettwrong Jan 16, 2025
1860ef2
Migrate base image rotation table out of shift loop
garrettwrong Jan 16, 2025
ec6a5d7
remove cufinufft 3d1 method workaround
garrettwrong Jan 30, 2025
bb67480
plumb batch_size through class averager code
garrettwrong Jan 30, 2025
9f91940
stashing epsdR port of isotropic noise est
garrettwrong Jan 10, 2025
460f6a0
epsdR port of isotropic noise est matching in dbgr
garrettwrong Jan 14, 2025
dc88863
initial port of epsdS
garrettwrong Jan 14, 2025
dd0b934
Add gwindow. P2 comparable to MATLAB.
garrettwrong Jan 14, 2025
7dcaecf
migrate gaussian_window to utils
garrettwrong Jan 14, 2025
19af6fc
Begin cleanup and add test for gaussian_window
garrettwrong Jan 14, 2025
5135721
make ImageAccessor more compatible with Image
garrettwrong Jan 15, 2025
df8d532
make ImageAccessor more compatible with Image
garrettwrong Jan 15, 2025
d747104
Migrate epsdS towards use of `Image` and into class method
garrettwrong Jan 15, 2025
ae0243f
Simplify NoiseEstimator classes
garrettwrong Jan 16, 2025
e7c06d4
Begin adding into unit test framework
garrettwrong Jan 17, 2025
4ec718f
Add initial implementation of legacy_whiten in Image and Xform
garrettwrong Jan 24, 2025
47db4b6
Cleanup legacy whitening methods/comments/asserts
garrettwrong Jan 27, 2025
f10f587
Change batchSize to batch_size
garrettwrong Jan 27, 2025
2a8cdae
Change bgRadius to bg_radius
garrettwrong Jan 27, 2025
dcdf14e
More minor LegacyWhiten cleanup
garrettwrong Jan 27, 2025
61918f8
More xp interop for legacy whitening
garrettwrong Jan 27, 2025
cff6de8
typos found in testing
garrettwrong Jan 27, 2025
26a8226
Sensitive to the sample grid
garrettwrong Jan 27, 2025
584e5fd
repro even samples_idx grid for whitening
garrettwrong Jan 28, 2025
0a7b9bd
Add pair of `legacy_whiten` unit tests to preprocess pipeline suite
garrettwrong Jan 28, 2025
de8a6b2
update exp 10028 pipeline to use legacy_whitening
garrettwrong Jan 29, 2025
56f325b
Name change
garrettwrong Jan 31, 2025
3196426
Complete missing docstring
garrettwrong Jan 31, 2025
d48d0c2
WIP legacy_whiten speedup (#1227)
garrettwrong Feb 5, 2025
69bc86f
extend other FFT packages to cover additional real functions
garrettwrong Feb 5, 2025
9f40430
private method names
garrettwrong Feb 6, 2025
2967478
Ncorr and tmp name changes
garrettwrong Feb 6, 2025
270ae88
dists dsquare renaming
garrettwrong Feb 6, 2025
fa6bca6
remove unnecessary flattens from code
garrettwrong Feb 6, 2025
bd38e8a
improve comment
garrettwrong Feb 6, 2025
21f3746
renaming style cleanup
garrettwrong Feb 6, 2025
723c340
renaming and slicing refactor
garrettwrong Feb 6, 2025
0a3c069
Use gauss 2d for gauss window
garrettwrong Feb 6, 2025
04161b0
Add PSD size check
garrettwrong Feb 6, 2025
6c7f65a
Make PSD normalization optional
garrettwrong Feb 6, 2025
1c633c8
changed tmp var from mask_padded to buf_padded
garrettwrong Feb 10, 2025
054ddf4
cache emdb_2660 in CI
j-c-c Jan 16, 2025
0b2009c
Finalized workflow. Squashed commits.
j-c-c Jan 16, 2025
39fcaa3
Attempt bug fix enforcing pure rotation for CL methods
garrettwrong Feb 18, 2025
65a7ec7
alter Kabsch for correct 2D projections of random ortho matrix
garrettwrong Feb 19, 2025
d644c49
cleanup Kabsch correction for 2D projections of random ortho matrix
garrettwrong Feb 19, 2025
5613fb1
add test for nearest_rotation
garrettwrong Feb 19, 2025
442de93
add filter/preprocess specific test of indexed source
garrettwrong Feb 14, 2025
38d1014
fix the indexed source filter mapping
garrettwrong Feb 14, 2025
c681a7a
fix inds dtype
garrettwrong Feb 14, 2025
9435cc8
tmp unmark test, test CI
garrettwrong Feb 18, 2025
134cb12
revert
garrettwrong Feb 18, 2025
9b39c17
rescale internal pixel size after downsample
garrettwrong Feb 19, 2025
c7e6f7c
add more source saving tests
garrettwrong Feb 19, 2025
e77783d
pass through pixel_size=None
garrettwrong Feb 19, 2025
bfe7bf8
exhaustive index-save-load testing
garrettwrong Feb 20, 2025
0cda2ba
cleanup indexed source test, prep for review
garrettwrong Feb 20, 2025
86eada5
Test: verify pooch path in workflow
j-c-c Feb 26, 2025
f703821
Set env variable to pas to tox. squashed commits.
j-c-c Feb 26, 2025
b553087
Experimental pipeline updates, add halfset example.
garrettwrong Feb 20, 2025
bf5b8ed
Fix sim pipeline index mapping
garrettwrong Feb 28, 2025
a99ee79
cleanup, mostly strings, add extra save point to 10028.
garrettwrong Mar 3, 2025
3869e9d
more cleanup, strings found in html version review.
garrettwrong Mar 3, 2025
9fb0292
make JSB reference pretty
garrettwrong Mar 3, 2025
110792d
String updates
garrettwrong Mar 4, 2025
0ee6d34
remove unused imports
j-c-c Mar 5, 2025
1c4aa3f
pass ASPIREDIR to make
j-c-c Mar 14, 2025
3daeeee
debug lines
j-c-c Mar 14, 2025
e74e169
try absolute path
j-c-c Mar 14, 2025
1761ba6
remove debug lines
j-c-c Mar 14, 2025
72dc8f2
Add cache hash validation to docs job. Check with test_vol in tutorial.
j-c-c Mar 14, 2025
e9a940f
fix yaml syntax
j-c-c Mar 14, 2025
a5d5c82
remove test vol download
j-c-c Mar 14, 2025
79ddf95
revert to export but use correct directory
j-c-c Mar 14, 2025
224b6c3
use workspace
j-c-c Mar 14, 2025
c63670d
remove debug
j-c-c Mar 14, 2025
65353d3
Bump version: 0.13.1 → 0.13.2
garrettwrong Mar 17, 2025
ae52011
Change sym_group dtype logger warning to actual warning. Cleanup all …
j-c-c Mar 4, 2025
6825579
remove added blank lines
j-c-c Mar 5, 2025
e509eb6
directly create class in astype
j-c-c Mar 7, 2025
41aa9d7
handle IdentityGroup which has order as an attribbute but not as an a…
j-c-c Mar 7, 2025
bd93bb4
dtype weights in parent class. Test with both weights dtypes
j-c-c Mar 7, 2025
5d6e95e
remove dtype from SymmetryGroup
j-c-c Mar 7, 2025
424f608
remove dtyping from SymmetryGroup. Fix tests
j-c-c Mar 11, 2025
a950cea
remove unsused import
j-c-c Mar 11, 2025
1dbaeab
missed astype
j-c-c Mar 11, 2025
2bab895
about_axis handle floats
j-c-c Mar 11, 2025
d755689
revert to self.dtype, but set to doubles
j-c-c Mar 11, 2025
46d6e39
copy False
j-c-c Mar 11, 2025
b4c980f
use np.full in place of np.ones
j-c-c Mar 11, 2025
4972243
fix dtype logic in about_axis
j-c-c Mar 11, 2025
01ebaa5
more copy False
j-c-c Mar 11, 2025
d090281
couple more
j-c-c Mar 11, 2025
7147ae3
copy True for test fixtures
j-c-c Mar 11, 2025
9052bf2
use sqrt default type
j-c-c Mar 11, 2025
90f2758
linspace
j-c-c Mar 11, 2025
c8a9756
compute in double then cast
j-c-c Mar 11, 2025
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
2 changes: 1 addition & 1 deletion .bumpversion.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 0.13.1
current_version = 0.13.2
commit = True
tag = True

Expand Down
182 changes: 148 additions & 34 deletions .github/workflows/workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,69 @@ jobs:
- name: Run Tox Check
run: tox -e check

build:
data-cache:
needs: check
runs-on: ubuntu-latest
outputs:
cache_hash: ${{ steps.compute-cache-hash.outputs.cache_hash }}
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.9'
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[dev]"
- name: Restore Cache
uses: actions/cache@v4
with:
key: cached-data-${{ hashFiles('**/registry.py', '**/*workflow.yml') }}
restore-keys: |
cached-data-
path: .github_cache/ASPIRE-data
enableCrossOsArchive: true
- name: Create Cache Directory
run: |
# Create cache and config directories
mkdir -p .github_cache/ASPIRE-data
chmod -R 777 .github_cache/ASPIRE-data
echo "cache:" > config.yaml
echo " cache_dir: .github_cache/ASPIRE-data" >> config.yaml
echo "Logging config.yaml for verification:"
cat config.yaml
- name: Download Cache Files
run: |
export ASPIREDIR=.
python -c "
from aspire.downloader import emdb_2660, simulated_channelspin
emdb_2660()
simulated_channelspin()
"
- name: Compute Cache Directory Hash
id: compute-cache-hash
run: |
echo "Computing hash for .github_cache/ASPIRE-data..."
# Compute a hash on the sorted file listing.
cache_hash=$(ls -1 .github_cache/ASPIRE-data/** | md5sum)
echo "Computed cache hash: $cache_hash"
# Expose the computed hash to subsequent steps/jobs.
echo "cache_hash=${cache_hash}" >> $GITHUB_OUTPUT
- name: Verify Cache Directory Before Saving
run: |
ls -lhR .github_cache/ASPIRE-data
[ -f config.yaml ]
- name: Save Cache
uses: actions/cache@v4
with:
key: cached-data-${{ hashFiles('**/registry.py', '**/*workflow.yml') }}
path: .github_cache/ASPIRE-data
enableCrossOsArchive: true

build:
needs: [check, data-cache]
runs-on: ubuntu-latest
# Run on every code push, but only on review ready PRs
if: ${{ github.event_name == 'push' || github.event.pull_request.draft == false }}
strategy:
Expand All @@ -39,7 +99,6 @@ jobs:
- python-version: '3.9'
pyenv: pip,docs


steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }} ${{ matrix.pyenv }}
Expand All @@ -51,15 +110,44 @@ jobs:
pip install tox tox-gh-actions
# Optional packages
pip install pyfftw # `test_fft` runs for pyfftw when installed
- name: Restore Cache
uses: actions/cache@v4
with:
key: cached-data-${{ hashFiles('**/registry.py', '**/*workflow.yml') }}
restore-keys: |
cached-data-
path: .github_cache/ASPIRE-data
enableCrossOsArchive: true
- name: Set Cache Directory
run: |
echo "cache:" > config.yaml
echo " cache_dir: .github_cache/ASPIRE-data" >> config.yaml
- name: Verify Restored Cache Directory
run: |
ls -lhR .github_cache/ASPIRE-data
[ -f config.yaml ]
- name: Test with tox
run: tox --skip-missing-interpreters false -e py${{ matrix.python-version }}-${{ matrix.pyenv }}
run: |
tox --override testenv.set_env=ASPIREDIR=${{ github.workspace }} \
--skip-missing-interpreters false \
-e py${{ matrix.python-version }}-${{ matrix.pyenv }}
- name: Validate Cache Directory Hash
run: |
echo "Computing hash for .github_cache/ASPIRE-data..."
new_hash=$(ls -1 .github_cache/ASPIRE-data/** | md5sum)
echo "Hash from data-cache job: ${{ needs.data-cache.outputs.cache_hash }}"
echo "Computed hash now: $new_hash"
if [ "${{ needs.data-cache.outputs.cache_hash }}" != "$new_hash" ]; then
echo "Error: Cache directory hash has changed!"
exit 1
fi
- name: Upload Coverage to CodeCov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}

conda-build:
needs: check
needs: [check, data-cache]
runs-on: ${{ matrix.os }}
# Only run on review ready pull_requests
if: ${{ github.event_name == 'pull_request' && github.event.pull_request.draft == false }}
Expand Down Expand Up @@ -97,8 +185,21 @@ jobs:
pip install -e ".[dev]"
pip freeze
python -c "import numpy; numpy.show_config()"
- name: Restore Cache
uses: actions/cache@v4
with:
key: cached-data-${{ hashFiles('**/registry.py', '**/*workflow.yml') }}
restore-keys: |
cached-data-
path: .github_cache/ASPIRE-data
enableCrossOsArchive: true
- name: Set Cache Directory
run: |
echo "cache:" > config.yaml
echo " cache_dir: .github_cache/ASPIRE-data" >> config.yaml
- name: Execute Pytest Conda ${{ matrix.os }} Python ${{ matrix.python-version }}
run: |
export ASPIREDIR=.
export OMP_NUM_THREADS=2
# -n runs test in parallel using pytest-xdist
pytest -n2 --durations=50 -s
Expand Down Expand Up @@ -149,15 +250,16 @@ jobs:
echo "Stash the WORK_DIR to GitHub env so we can clean it up later."
echo "WORK_DIR=${WORK_DIR}" >> $GITHUB_ENV
echo -e "common:" >> ${WORK_DIR}/config.yaml
echo -e " cache_dir: ${CI_CACHE_DIR}" >> ${WORK_DIR}/config.yaml
echo -e " numeric: cupy" >> ${WORK_DIR}/config.yaml
echo -e " fft: cupy\n" >> ${WORK_DIR}/config.yaml
echo -e "cache:" >> ${WORK_DIR}/config.yaml
echo -e " cache_dir: ${CI_CACHE_DIR}" >> ${WORK_DIR}/config.yaml
echo "Log the config: ${WORK_DIR}/config.yaml"
cat ${WORK_DIR}/config.yaml
- name: Cache Data
run: |
ASPIREDIR=${{ env.WORK_DIR }} python -c \
"import aspire; print(aspire.config['common']['cache_dir']); import aspire.downloader; aspire.downloader.emdb_2660()"
"import aspire; print(aspire.config['cache']['cache_dir']); import aspire.downloader; aspire.downloader.emdb_2660()"
- name: Run
run: |
ASPIREDIR=${{ env.WORK_DIR }} PYTHONWARNINGS=error python -m pytest --durations=50 --cov=aspire --cov-report=xml
Expand All @@ -168,30 +270,6 @@ jobs:
- name: Cleanup
run: rm -rf ${{ env.WORK_DIR }}

# Create cache and download data for Github Actions CI.
data-cache:
needs: check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.9'
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[dev]"
- name: Create Cache
uses: actions/cache@v4
with:
path: ~/.cache/ASPIRE-data
key: ${{ runner.os }}-cached-data
- name: Download EMDB 2660
run: |
python -c \
"from aspire.downloader import emdb_2660; emdb_2660()"

# Build branch's docs and gallery.
docs:
needs: [check, data-cache]
Expand All @@ -209,10 +287,18 @@ jobs:
- name: Restore Cache
uses: actions/cache@v4
with:
path: ~/.cache/ASPIRE-data
key: ${{ runner.os }}-cached-data
key: cached-data-${{ hashFiles('**/registry.py', '**/*workflow.yml') }}
restore-keys: |
cached-data-
path: .github_cache/ASPIRE-data
enableCrossOsArchive: true
- name: Set Cache Directory
run: |
echo "cache:" > config.yaml
echo " cache_dir: .github_cache/ASPIRE-data" >> config.yaml
- name: Build Sphinx docs
run: |
export ASPIREDIR=${{ github.workspace }}
make distclean
sphinx-apidoc -f -o ./source ../src -H Modules
make html
Expand All @@ -223,9 +309,19 @@ jobs:
name: sphinx-docs
path: docs/build
retention-days: 7
- name: Validate Cache Directory Hash
run: |
echo "Computing hash for .github_cache/ASPIRE-data..."
new_hash=$(ls -1 .github_cache/ASPIRE-data/** | md5sum)
echo "Hash from data-cache job: ${{ needs.data-cache.outputs.cache_hash }}"
echo "Computed hash now: $new_hash"
if [ "${{ needs.data-cache.outputs.cache_hash }}" != "$new_hash" ]; then
echo "Error: Cache directory hash has changed!"
exit 1
fi

osx_arm:
needs: check
needs: [check, data-cache]
runs-on: macos-14
# Run on every code push, but only on review ready PRs
if: ${{ github.event_name == 'push' || github.event.pull_request.draft == false }}
Expand All @@ -239,5 +335,23 @@ jobs:
python --version
pip install -e ".[dev]" # install aspire
pip freeze
- name: Restore Cache
uses: actions/cache@v4
with:
key: cached-data-${{ hashFiles('**/registry.py', '**/*workflow.yml') }}
restore-keys: |
cached-data-
path: .github_cache/ASPIRE-data
enableCrossOsArchive: true
- name: Set Cache Directory
run: |
echo "cache:" > config.yaml
echo " cache_dir: .github_cache/ASPIRE-data" >> config.yaml
- name: Verify Restored Cache Directory
run: |
ls -lhR .github_cache/ASPIRE-data
[ -f config.yaml ]
- name: Test
run: python -m pytest -n3 --durations=50
run: |
export ASPIREDIR=.
python -m pytest -n3 --durations=50
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5657281.svg)](https://doi.org/10.5281/zenodo.5657281)
[![Downloads](https://static.pepy.tech/badge/aspire/month)](https://pepy.tech/project/aspire)

# ASPIRE - Algorithms for Single Particle Reconstruction - v0.13.1
# ASPIRE - Algorithms for Single Particle Reconstruction - v0.13.2

The ASPIRE-Python project supersedes [Matlab ASPIRE](https://github.com/PrincetonUniversity/aspire).

Expand All @@ -20,7 +20,7 @@ For more information about the project, algorithms, and related publications ple
Please cite using the following DOI. This DOI represents all versions, and will always resolve to the latest one.

```
ComputationalCryoEM/ASPIRE-Python: v0.13.1 https://doi.org/10.5281/zenodo.5657281
ComputationalCryoEM/ASPIRE-Python: v0.13.2 https://doi.org/10.5281/zenodo.5657281

```

Expand Down
18 changes: 14 additions & 4 deletions docs/source/class_source.rst
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ required component and assign them here for complete control.

""""""""""

While that allows for full customization, two helper classes are
provided that supply defaults as a jumping off point. Both of these
While that allows for full customization, helper classes are
provided that supply defaults as a jumping off point. These
helper sources only require an input ``Source`` to be instantiated.
They can still be fully customized, but they are intended to start
with sensible defaults, so users only need to instantiate the specific
Expand All @@ -61,18 +61,27 @@ components they wish to configure.
classDiagram
ClassAvgSource <|-- DebugClassAvgSource
ClassAvgSource <|-- DefaultClassAvgSource
ClassAvgSource <|-- LegacyClassAvgSource
class DebugClassAvgSource{
src: ImageSource
classifier: RIRClass2D
class_selector: TopClassSelector
averager: BFRAverager2D
+images()
}
class LegacyClassAvgSource{
src: ImageSource
classifier: RIRClass2D
class_selector: GlobalVarianceClassSelector
averager: BFRAverager2D
+images()
}
class DefaultClassAvgSource{
version="0.11.0"
version="0.13.2"
src: ImageSource
classifier: RIRClass2D
class_selector: NeighborVarianceWithRepulsionClassSelector
quality_function: BandedSNRImageQualityFunction
averager: BFSRAverager2D
+images()
}
Expand All @@ -86,7 +95,7 @@ mappings etc.

``DefaultClassAvgSource`` applies the most sensible defaults available
in the current ASPIRE release. ``DefaultClassAvgSource`` takes a
version string, such as ``0.11.0`` which will return a specific
version string, such as ``0.13.2`` which will return a specific
configuration. This version should allow users to perform a similar
experiment across releases as ASPIRE implements improved methods.
When a version is not provided, ``DefaultClassAvgSource`` defaults to
Expand Down Expand Up @@ -160,6 +169,7 @@ can reduce pipeline run times by an order of magnitude.
ClassSelector <|-- TopClassSelector
ClassSelector <|-- RandomClassSelector
ClassSelector <|-- NeighborVarianceClassSelector
ClassSelector <|-- GlobalVarianceClassSelector
ClassSelector <|-- DistanceClassSelector
ClassSelector o-- GreedyClassRepulsionMixin

Expand Down
2 changes: 1 addition & 1 deletion docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@
# built documents.
#
# The full version, including alpha/beta/rc tags.
release = version = "0.13.1"
release = version = "0.13.2"

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
2 changes: 1 addition & 1 deletion docs/source/index.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Aspire v0.13.1
Aspire v0.13.2
==============

Algorithms for Single Particle Reconstruction
Expand Down
Loading
Loading