pystackreg icon indicating copy to clipboard operation
pystackreg copied to clipboard

parallelize register/transform stack

Open orena1 opened this issue 4 years ago • 1 comments

Use pool to parallelize stack registration, added a variable processes that sets the number of processes to use. If it is 1 the original code is executed if it is larger than one the parallelized code will run. note that progress_callback does not work with the parallelized version

orena1 avatar May 29 '21 06:05 orena1

Test

from pystackreg import StackReg
import tifffile as tif

#load data and incrase size
loaded = tif.imread(BASE_PATH +'/pc12-reg-affine.tif')
data = np.repeat(np.repeat(np.repeat(loaded,8,0),3,2),3,1)


sr = StackReg(StackReg.AFFINE)

%%timeit
out_mean_20p = sr.register_transform_stack(data, reference='mean', processes=20)
##  5.87 s ± 129 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

%%timeit
out_mean_20p = sr.register_transform_stack(data, reference='mean', processes=1)
## 18 s ± 815 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)


np.all(out_mean_20p==out_mean_1p)
## True

orena1 avatar May 29 '21 07:05 orena1