def P3_to_R3_opt_damp(P3, E_all=((1,), (1,), (1,)), damp0=None, trim=True, include_margin=True, minimizer=scipy.optimize.minimize, **min_kwargs): conv_mat, shapes, slice_maps = convolution_parameters(P3.shape, E_all) P3 = reduce(invert_loop_matvec(minimizer, **min_kwargs), zip(conv_mat[::-1], shapes[-2::-1], [[(y, x) for (x, y) in sm] for sm in slice_maps[::-1]], damp0), shift_time_indices_undo(P3, E_all, trim, include_margin)) try: return MetaArray(P3, ticks=unexpand_ticks(P3, E_all), rw_freq=P3.rw_freq) except AttributeError: return P3
def P3_to_R3_fixed_damp(P3, E_all=((1,), (1,), (1,)), damp=None, trim=True, include_margin=True): conv_mat, shapes, slice_maps = convolution_parameters(P3.shape, E_all) deconv_mat = [Ainv for (Ainv, _) in generalized_tikhonov_inverse(A, d) for A, d in zip(conv_mat, damp)] P3 = reduce(loop_matvec, zip(deconv_mat[::-1], shapes[-2::-1], [[(y, x) for (x, y) in slice_map] for slice_map in slice_maps[::-1]]), shift_time_indices_undo(P3, E_all, trim, include_margin)) try: return MetaArray(P3, ticks=unexpand_ticks(P3, E_all), rw_freq=P3.rw_freq) except AttributeError: return P3
def P3_to_R3_opt_damp(P3, E_all=((1, ), (1, ), (1, )), damp0=None, trim=True, include_margin=True, minimizer=scipy.optimize.minimize, **min_kwargs): conv_mat, shapes, slice_maps = convolution_parameters(P3.shape, E_all) P3 = reduce( invert_loop_matvec(minimizer, **min_kwargs), zip(conv_mat[::-1], shapes[-2::-1], [[(y, x) for (x, y) in sm] for sm in slice_maps[::-1]], damp0), shift_time_indices_undo(P3, E_all, trim, include_margin)) try: return MetaArray(P3, ticks=unexpand_ticks(P3, E_all), rw_freq=P3.rw_freq) except AttributeError: return P3
def P3_to_R3_fixed_damp(P3, E_all=((1, ), (1, ), (1, )), damp=None, trim=True, include_margin=True): conv_mat, shapes, slice_maps = convolution_parameters(P3.shape, E_all) deconv_mat = [ Ainv for (Ainv, _) in generalized_tikhonov_inverse(A, d) for A, d in zip(conv_mat, damp) ] P3 = reduce( loop_matvec, zip(deconv_mat[::-1], shapes[-2::-1], [[(y, x) for (x, y) in slice_map] for slice_map in slice_maps[::-1]]), shift_time_indices_undo(P3, E_all, trim, include_margin)) try: return MetaArray(P3, ticks=unexpand_ticks(P3, E_all), rw_freq=P3.rw_freq) except AttributeError: return P3