@@ -168,39 +168,46 @@ def test_bulk_expand_radial_vec():
168168 """
169169 For a given stack of radial vectors (such as from
170170 RadialCTFFilters) `expand_radial_vec` should return equivalent
171- result as calling filter_to_basis_mat on each filter.
171+ result as calling filter_stack_to_basis_mats on filter_stack,
172+ and calling filter_to_basis_mat on each filter.
172173 """
173174
174175 L = 32
175176 dtype = np .float32
176177 basis = FFBBasis2D (L , dtype = dtype )
177178 pixel_size = 1.23
178179
179- filters = [ RadialCTFFilter (defocus = d ) for d in np .linspace (10000 , 15000 , 3 )]
180-
180+ filters = RadialCTFFilter (defocus = np .linspace (10000 , 15000 , 3 ))
181+ stack_references = basis . filter_stack_to_basis_mats ( filters , pixel_size = pixel_size )
181182 references = [basis .filter_to_basis_mat (f , pixel_size = pixel_size ) for f in filters ]
182183
183- # from cov code
184- params = np .empty ((len (filters ), 7 ), dtype = dtype )
185- for i , f in enumerate (filters ):
186- # TODO xxx fix param dump, same as sim/source
187- params [i ] = np .array (f ._ctf_params ()).flatten ()
188-
184+ # Stack of all filter params
185+ params = filters ._ctf_params ()
186+ # Stack of filter values
189187 _filter_vals = RadialCTFFilter .ctf_formula (
190188 basis ._filter_pts , pixel_size , * (params .T )
191189 )
192190
191+ # Stack result
193192 results = basis .expand_radial_vec (_filter_vals )
193+ # Sequential result
194194 results2 = [basis .expand_radial_vec (f )[0 ] for f in _filter_vals ]
195195
196196 # expand_radial_vec should be same as itself called sequentially
197197 assert len (results2 ) == len (results )
198198 for res , ref in zip (results2 , results ):
199199 np .testing .assert_allclose (res .dense (), ref .dense ())
200200
201- # and should be equivalent to calling filter_to_basis_mat
201+ # and should be equivalent to calling filter_to_basis_mat (for this radial case)
202202 assert len (results ) == len (references )
203203 for res , ref in zip (results , references ):
204204 np .testing .assert_allclose (
205205 res .dense (), ref .dense (), atol = utest_tolerance (dtype )
206206 )
207+
208+ # The list from filter_to_basis_mat should be equivalent to list filter_stack_to_basis_mats
209+ assert len (references ) == len (stack_references )
210+ for res , ref in zip (stack_references , references ):
211+ np .testing .assert_allclose (
212+ res .dense (), ref .dense (), atol = utest_tolerance (dtype )
213+ )
0 commit comments