diff --git a/align.py b/align.py index 233837955851d18ec0d87beb7f15a3c724a65e82..2be1c85cf25e76526554ef7f02af5ce3085d421e 100644 --- a/align.py +++ b/align.py @@ -16,13 +16,21 @@ from scipy.ndimage import laplace, rotate import json -def align_multichip(BF_TRITC_2D_path, out_path, concentrations_path, template_path, labels_path, table_path, fit_poisson, nmax=10): +def align_multichip( + BF_TRITC_2D_path, + out_path, + concentrations_path, + template_path, + labels_path, + table_path, + fit_poisson, + nmax=10): with open(concentrations_path, 'r') as f: concentrations_dct = (yaml.safe_load(f)) concentrations = concentrations_dct['concentrations'] - if "rotation_template_deg" in concentrations_dct: - rotate_template_deg = int(concentrations_dct["rotation_template_deg"]) - print(f'Rotation: {rotate_template_deg}') + if "rotation_data_deg" in concentrations_dct: + rotation_data_deg = int(concentrations_dct["rotation_data_deg"]) + print(f'Rotation: {rotation_data_deg}') else: rotate_template_deg = 0 print('concentrations: ', concentrations) @@ -32,9 +40,6 @@ def align_multichip(BF_TRITC_2D_path, out_path, concentrations_path, template_pa data = read_dask(BF_TRITC_2D_path) template16 = tf.imread(template_path) - if rotate_template_deg != 0: - data = da.from_array(rotate(data, rotate_template_deg)) - print(f'Rotated data {rotate_template_deg} deg') big_labels = tf.imread(labels_path) fun = partial( @@ -43,7 +48,8 @@ def align_multichip(BF_TRITC_2D_path, out_path, concentrations_path, template_pa big_labels=big_labels, unit=unit, fit_poisson=fit_poisson, - nmax=nmax ) + nmax=nmax, + rotation_data_deg=rotation_data_deg ) try: p=Pool(data.shape[0]) @@ -89,7 +95,16 @@ def align_multichip(BF_TRITC_2D_path, out_path, concentrations_path, template_pa def align_parallel(args, **kwargs): return align2D(*args, **kwargs) -def align2D(stack_dask, path_tif, ab, template16=None, big_labels=None, unit='μg_mL', fit_poisson=True, nmax=20): +def align2D( + stack_dask, + path_tif, + ab, + template16=None, + big_labels=None, + unit='μg_mL', + fit_poisson=True, + nmax=20, + rotation_data_deg=0): print(ab, unit) try: aligned = tf.imread(path_tif) @@ -102,6 +117,10 @@ def align2D(stack_dask, path_tif, ab, template16=None, big_labels=None, unit='μ print('Processing...') data = stack_dask.compute() + if rotation_data_deg != 0: + data = rotate(data, rotation_data_deg) + print(f'Rotated data {rotation_data_deg} deg') + aligned, tvec = register.align_stack( data, path_to_save=None,