pystackreg
pystackreg copied to clipboard
parallelize register/transform stack
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
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