def convtest(test_signal, delta, func): domain = test_signal.domain # Create Convolution Operator conv_op = ift.FuncConvolutionOperator(domain, func) # Convolve, Adjoint-Convolve conv_signal = conv_op(test_signal) cac_signal = conv_op.adjoint_times(conv_signal) print(test_signal.integrate(), conv_signal.integrate(), cac_signal.integrate()) # generate kernel image conv_delta = conv_op(delta) # Plot results plot = ift.Plot() plot.add(signal, title='Signal') plot.add(conv_signal, title='Signal Convolved') plot.add(cac_signal, title='Signal, Conv, Adj-Conv') plot.add(conv_delta, title='Kernel') plot.output()
MOCK_NOISE = N.draw_sample() data = R(MOCK_SIGNAL) + MOCK_NOISE # Build inverse propagator D and information source j D_inv = R.adjoint @ N.inverse @ R + S.inverse j = R.adjoint_times(N.inverse_times(data)) # Make D_inv invertible (via Conjugate Gradient) IC = ift.GradientNormController(iteration_limit=500, tol_abs_gradnorm=1e-3) D = ift.InversionEnabler(D_inv, IC, approximation=S.inverse).inverse # Calculate WIENER FILTER solution m = D(j) # Plotting rg = isinstance(position_space, ift.RGSpace) plot = ift.Plot() filename = "getting_started_1_mode_{}.png".format(mode) if rg and len(position_space.shape) == 1: plot.add([HT(MOCK_SIGNAL), GR.adjoint(data), HT(m)], label=['Mock signal', 'Data', 'Reconstruction'], alpha=[1, .3, 1]) plot.add(mask_to_nan(mask, HT(m - MOCK_SIGNAL)), title='Residuals') plot.output(nx=2, ny=1, xsize=10, ysize=4, name=filename) else: plot.add(HT(MOCK_SIGNAL), title='Mock Signal') plot.add(mask_to_nan(mask, (GR(Mask)).adjoint(data)), title='Data') plot.add(HT(m), title='Reconstruction') plot.add(mask_to_nan(mask, HT(m - MOCK_SIGNAL)), title='Residuals') plot.output(nx=2, ny=2, xsize=10, ysize=10, name=filename) print("Saved results as '{}'.".format(filename))